python处理geojson为本地shp文件

一.成果展示

二.环境


        我是在Anaconda下的jupyter notebook完成代码的编写,下面是我对应的版本号,我建议大家在这个环境下编写,因为在下载gdal等包的时候会更方便。

二.参考网站 

osgeo.osr module — GDAL documentation

osgeo.ogr module — GDAL documentation

 不过对应API像字典一样,对新手不太友好,可以结合网上博客和AI来学习,而且随着时间的变化,相应API可能也会变化,发现实现不了的时候及时查阅。

二. 代码


from osgeo import ogr, osr
import requests
import json

# 获取geojson
url = 'https://geo.datav.aliyun.com/areas_v3/bound/410000_full.json'
geojson = requests.get(url)
data = json.loads(geojson.content)

# 准备shp数据源
driver = ogr.GetDriverByName('ESRI Shapefile')
shp_path = 'C:\python爬虫\henan.shp'
data_source = driver.CreateDataSource(shp_path)

# 定义坐标系
srs = osr.SpatialReference()
srs.ImportFromEPSG(4326)

# 创建坐标系
layer = data_source.CreateLayer('province',srs,ogr.wkbMultiPolygon)


feature_def = layer.GetLayerDefn() #获取图层定义
properties = data['features'][0]['properties']
#根据properties字典中提供的属性名称,为一个矢量图层添加一系列字符串类型的属性字段
for prop_name in properties.keys():
    field = ogr.FieldDefn(prop_name,ogr.OFTString)
    layer.CreateField(field)
    
    
for feature in data['features']:
    geom = ogr.CreateGeometryFromJson(json.dumps(feature['geometry']))
    shp_feature = ogr.Feature(feature_def) #生成新的特征(Feature),以便将其添加到layer中
    
    for prop_name,prop_value in feature['properties'].items():
        # 将属性值转换为字符串
        prop_value = str(prop_value) if prop_value is not None else ''
        #将属性名,属性值添加到特征中
        shp_feature.SetField(prop_name, prop_value)
 
    #创建几何
    shp_feature.SetGeometry(geom)
    #创建图层的特征
    layer.CreateFeature(shp_feature)
    # 销毁要素,释放内存
    shp_feature = None
# 关闭数据源
data_source = None

相关推荐

  1. Python与ArcGIS系列(十七)GDAL之shpgeojson

    2024-03-10 10:14:06       40 阅读
  2. Python基础】文件处理

    2024-03-10 10:14:06       8 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-10 10:14:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-10 10:14:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-10 10:14:06       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-10 10:14:06       20 阅读

热门阅读

  1. ODI报错

    ODI报错

    2024-03-10 10:14:06      16 阅读
  2. centos7.9升级ssh和openssl

    2024-03-10 10:14:06       22 阅读
  3. Android工具adb下载安装环境配置详细教程

    2024-03-10 10:14:06       21 阅读
  4. 数据库中关于结构化查询语言sql的简单介绍

    2024-03-10 10:14:06       21 阅读
  5. scikit-learn保姆级入门教程

    2024-03-10 10:14:06       22 阅读