python处理shp数据以及地理/投影坐标的转换

本文介绍了如何使用Python的pyshp模块读取Shp数据,包括点的坐标和属性值。同时,讨论了地理坐标与投影坐标的转换,提到了pyproj库可能与BlenderGIS插件冲突的问题,并提供了GDAL库作为替代方案进行坐标转换的方法。
摘要由CSDN通过智能技术生成

shp数据读取

Shapefile属于一种矢量图形格式,它能够保存几何图形的位置及相关属性。Shapefile文件用于描述几何体对象:点,折线与多边形。例如,Shapefile文件可以存储井、河流、湖泊等空间对象的几何位置。除了几何位置,shp文件也可以存储这些空间对象的属性,例如一条河流的名字,一个城市的温度等等。
本次处理shp数据需要使用到pyshp这一模块。其安装可以在cmd上使用pip进行安装。cd到blender中的python路径下面,使用python -m pip install pyshp这一语句安装。
在这里插入图片描述
在使用时,可以使用如下代码查看内容:

import shapefile  # 使用pyshp
file = shapefile.Reader("D://2019全国行政区划//省.shp")
print(file.fields)# 输出所有字段信息
print(file.record(0)[0])#第一个对象的第一个属性值

而file本身还有很多属性,在blender的控制台利用自动补全功能可以很方便地获得展开解读࿰

GIS中,使用Python改变Shapefile(shp)文件的投影坐标,通常会用到GDAL/OGR库。GDAL是一个用于读取和写入栅格地理数据格式的库,而OGR则专注于矢量数据。下面是一个使用Python脚本通过GDAL/OGR库改变Shapefile文件投影坐标的简单示例: 1. 首先,需要安装GDAL/OGR库。可以使用pip安装pygdal库: ``` pip install pygdal ``` 2. 接下来,使用以下Python代码来改变Shapefile的投影坐标: ```python from osgeo import ogr, osr # 输入和输出的Shapefile文件路径 in_shp = 'path_to_input_shapefile.shp' out_shp = 'path_to_output_shapefile.shp' # 打开输入的Shapefile ds = ogr.Open(in_shp) if ds is None: print('输入的Shapefile无法打开。') exit() # 获取输入Shapefile的图层 layer = ds.GetLayer() layer_defn = layer.GetLayerDefn() # 创建输出Shapefile driver = ogr.GetDriverByName('ESRI Shapefile') if os.path.exists(out_shp): driver.DeleteDataSource(out_shp) out_ds = driver.CreateDataSource(out_shp) # 定义新的坐标系统(这里需要定义为实际的目标投影) # 例如,将坐标转换为WGS 84 (EPSG:4326) out_srs = osr.SpatialReference() out_srs.ImportFromEPSG(4326) # 创建输出图层,并定义新的坐标系统 out_layer = out_ds.CreateLayer(out_shp, geom_type=layer_defn.GetGeomType(), srs=out_srs) # 复制字段定义 for i in range(layer_defn.GetFieldCount()): field_defn = layer_defn.GetFieldDefn(i) out_layer.CreateField(field_defn) # 遍历要素,并复制它们到输出Shapefile feature = layer.GetNextFeature() while feature: out_layer.CreateFeature(feature) feature = layer.GetNextFeature() # 清理 out_ds = None ds = None ``` 在使用上述代码之前,请确保将`path_to_input_shapefile.shp`和`path_to_output_shapefile.shp`替换为实际的文件路径,并且将新的坐标系统设置为期望的EPSG代码或者自己定义的坐标系统。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值