《Python地理空间分析指南 第2版》学习笔记-5.5Shapefile文件编辑-中

14 篇文章 3 订阅
13 篇文章 4 订阅

第5章 Python与地理信息系

5.5 Shapefile文件编辑

5.5.1-5.5.3章节见《Python地理空间分析指南 第2版》学习笔记-5.5Shapefile文件编辑-上

5.5.4 Shapefile文件修改

书中部分代码由于版本更新,无法运行,鼓捣了半天,终于好了。

(1)复制矢量文件,并加上投影
import shapefile
import utm
import urllib.request

r = shapefile.Reader(r"NYC_MUSEUMS_GEO\NYC_MUSEUMS_GEO.shp")
print(list(r.fields))
print(r.shapeTypeName)
# w = shapefile.Writer(r"NYC_MUSEUMS_GEO\NYC_MUSEUMS_UTM2.shp", shapeType=r.shapeType)
with shapefile.Writer(r"NYC_MUSEUMS_GEO\NYC_MUSEUMS_UTM.shp", shapeType=r.shapeType) as w:

    # print(r.fields[1:])
    w.fields = list(r.fields[1:])
    # w.records.extend(r.records())
    for rec in r.iterShapeRecords():
        # print(rec.record[0])
        # 逐条添加数
        # 注意*list(rec.record)和list(rec.record)的区别:
        w.record(*list(rec.record))
# 投影转换
    for shape in r.iterShapes():
        # print(sha.points[0])
        lon, lat = shape.points[0]
        # 投影转换,设置坐标
        y, x, zone, band = utm.from_latlon(lat, lon)
        w.point(x, y)
print(12)

# 此外,不需要像5-4重投影示例中那样写入一个PRJ投影文件。
# 有一种简便的方法可以**创建一个PRJ文件**,
# 那就是通过EPSG代码访问SpatialReference.org网站来实现。
# 从前面的示例中的时区变量可以知道,之前使用的UTM18区的EPSG代码是26918,相关代码如下:
#生成投影文件
prj = urllib.request.urlopen("http://spatialreference.org/ref/epsg/26918/esriwkt/")
with open(r"NYC_MUSEUMS_GEO\NYC_MUSEUMS_UTM.prj", "w") as f:
    f.write(str(prj.read()))

在这里插入图片描述
*list(rec.record)和list(rec.record)的区别 好大一坑啊
*list(rec.record):
在这里插入图片描述
list(rec.record):
在这里插入图片描述

(2)读取Shapefile文件,然后将其拷贝,并添加一个多边形保存。
import shapefile

file_name = r"ep202009.026_5day_pgn\ep202009.026_5day_pgn.shp"
r = shapefile.Reader(file_name)

# 拷贝shapefile文件到 写入对象 中
with shapefile.Writer(r"ep202009.026_5day_pgn\test2", r.shapeType) as w:
    # 复制现有的字段
    w.fields = list(r.fields)
    # 复制现有的记录
    for rec in r.records():
        w.record(list(rec))
    # 复制现有的矩形
    for s in r.shapes():
        w._shapeparts(parts=[s.points], shapeType=s.shapeType)
    # 添加一个矩形
    w.poly([[[-104, 24], [-104, 25], [-103, 25], [-103, 24], [-104, 24]]])
    # 添加一个新的数据
    w.record("STANLEY", "TD", "091022/1500", "27", "21", "48", "ep")

在这里插入图片描述

添加一个矩形并增加一条记录:
在这里插入图片描述

(3)添加投影字段,并把投影坐标写入到记录中
import shapefile

filename1 = r"NYC_MUSEUMS_GEO\NYC_MUSEUMS_UTM444.shp"
r = shapefile.Reader(filename1)

filename2 = r"NYC_MUSEUMS_GEO\NYC_MUSEUMS_UTM555.shp"
with shapefile.Writer(filename2,r.shapeType) as w:
    # 复制原有的字段
    # w.fields = list(r.fields)
    w.fields = list(r.fields[1:])
    # 添加新字段,添加一个最大长度为8、小数精度为5位的浮点型字段
    w.field("LAT","F",8,5)
    w.field("LON","F",8,5)

    for i in range(r.numRecords):
        lon, lat = r.shape(i).points[0]
        #设置点的投影坐标
        w.point(lon, lat)
        #逐条记录添加,并添加投影坐标
        w.record(*list(r.record(i)), lat, lon)

NYC_MUSEUMS_UTM444.shp 的属性表:
在这里插入图片描述

NYC_MUSEUMS_UTM555.shp 的属性表:
在这里插入图片描述


结束语

《Python地理空间分析指南 第2版》学习笔记,仅供学习,如有侵权请联系删除。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 《Python地理空间分析指南》是一本介绍使用Python进行地理空间数据处理和分析指南。该书详细介绍了如何使用Python编程语言进行地理空间数据的读取、处理、分析和可视化。 首先,本书从基础知识开始,介绍了地理信息系统(GIS)和空间数据的基本概念。读者可以了解到地理空间数据的类型、结构和特点,以及相关的地理数据模型和坐标系统。 然后,本书介绍了Python语言的基础知识和地理空间分析的常用工具包,如GDAL、Fiona、PySAL等。读者可以学习如何通过这些工具包读取和处理常见的地理空间数据格式,如Shapefile、GeoJSON等。 接着,本书以实例的形式介绍了一系列地理空间分析的常见任务,包括空间查询、空间缓冲区分析空间插值、地理空间回归分析等。每个实例都给出了详细的代码和步骤,读者可以通过学习这些实例来理解如何使用Python进行地理空间分析。 此外,本书还介绍了一些高级的地理空间分析技术,如空间统计分析、网络分析、时间空间分析等。读者可以通过学习这些技术,提升自己在地理空间分析领域的能力。 最后,本书还介绍了如何使用Python进行地理空间数据可视化,包括绘制地图、制作动态可视化等。读者可以通过学习这些技术,将地理空间数据可视化为直观的图形展示,更好地理解和分析数据。 总而言之,本书通过系统的介绍和实例演示,帮助读者掌握使用Python进行地理空间分析的基本原理和方法。无论是初学者还是有一定经验的数据分析师,都可以从本书获得实用的知识和技巧。 ### 回答2: 《Python地理空间分析指南》是一本介绍使用Python进行地理空间分析指南地理空间分析是指用计算机技术和地理信息系统(GIS)来处理和分析地理数据的方法和工具。该指南主要介绍了如何使用Python编程语言来读取、处理、分析和可视化地理数据。 在这本指南,读者将学习使用Python的主要库和模块,如GDAL、Geopandas、Shapely等,来处理不同格式的地理数据,包括栅格数据和矢量数据。读者将学习如何读取地理数据文件,并进行数据的预处理、筛选和转换。 指南还介绍了一些常见的地理空间分析方法和技术,如空间插值、空间统计分析地理网络分析等。读者将学会如何使用Python来应用这些方法,并通过可视化工具将分析结果以地图的形式展示出来。 除了基本的地理空间分析方法,指南还介绍了一些高级的主题,如空间回归分析地理聚类分析地理大数据处理等。这些主题将帮助读者深入理解地理空间分析的应用领域,并提供了更多应用的思路和方法。 这本指南的目标读者是对地理信息科学和计算机编程有一定了解的人士,希望通过Python来进行地理空间分析的人士。它不仅可以帮助读者掌握Python编程技巧,还可以帮助读者在GIS领域应用Python进行地理数据处理和分析,提高工作效率和数据分析的准确性。 ### 回答3: 《Python地理空间分析指南》是一本介绍如何使用Python进行地理空间分析的电子书,以PDF格式进行发布。该书主要内容涵盖了地理数据处理、空间数据可视化、空间数据挖掘等方面的知识和技巧。 这本指南对于想要利用Python进行地理空间分析的人来说是一本非常有价值的资料。通过学习指南,读者可以了解如何使用Python来读取、处理和分析地理数据。该指南介绍了一些常用的Python库和工具,比如geopandas、shapely和pySAL等,这些工具可以帮助读者处理地理空间数据,进行地图制作和空间统计分析等工作。 另外,该指南还介绍了一些地理空间分析的常用方法和技术。比如,如何计算地理空间数据之间的距离或相似性,如何进行空间插值和地理加权回归等。这些技术对于研究地理空间问题和解决实际问题都具有重要意义。 总的来说,通过学习Python地理空间分析指南》,读者可以获得使用Python进行地理空间分析的基础知识和实用技巧。这本指南包含了丰富的实例和案例,以及相关的代码和数据,读者可以通过实践来加深对地理空间分析的理解和应用。无论是从事地理信息系统研究的专业人士,还是对地理空间分析感兴趣的初学者,都能从该指南获益匪浅。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值