网络编程
位置:首页>> 网络编程>> 网络编程>> 创建Shapefile文件并写入数据的例子

创建Shapefile文件并写入数据的例子

作者:TheOneGIS  发布时间:2023-06-21 23:27:12 

标签:Shapefile,写入数据

基本思路

使用GDAL创建Shapefile数据的基本步骤如下:

使用osgeo.ogr.Driver的CreateDataSource()方法创建osgeo.ogr.DataSource矢量数据集

使用osgeo.ogr.DataSource的CreateLayer()方法创建一个图层

使用osgeo.ogr.FieldDefn()定义Shapefile文件的属性字段

创建osgeo.ogr.Feature对象,设置每个属性字段的值,使用Feature对象的SetGeometry()定义几何属性

创建Feature对象以后,使用osgeo.ogr.Layer的CreateFeature()添加Feature对象到当前图层

重复步骤4和5依次添加所有的Feature到当前图层即可

代码实现

下面的例子中,我们读取GeoJSON表示的中国省区数据,然后其转为Shapefile格式。

GeoJSON编码片段如下:

创建Shapefile文件并写入数据的例子

可以看到每个Feature都有一个properties字段和geometry字段,我们需要根据properties字段的信息创建Shapefile数据的属性表,根据geometry字段创建Shapefile中的几何数据。

from osgeo import ogr
from osgeo import osr
import json
import os
os.environ['SHAPE_ENCODING'] = "utf-8"
with open('China.json') as f:
china = json.load(f)
# 创建DataSource
driver = ogr.GetDriverByName('ESRI Shapefile')
ds = driver.CreateDataSource('China.shp')
# 创建WGS84空间参考
srs = osr.SpatialReference()
srs.ImportFromEPSG(4326)
# 创建图层
layer = ds.CreateLayer('province', srs, ogr.wkbPolygon)
# 添加属性定义
fname = ogr.FieldDefn('Name', ogr.OFTString)
fname.SetWidth(24)
layer.CreateField(fname)
fcx = ogr.FieldDefn('CenterX', ogr.OFTReal)
layer.CreateField(fcx)
fcy = ogr.FieldDefn('CenterY', ogr.OFTReal)
layer.CreateField(fcy)
# 变量GeoJSON中的features
for f in china['features']:
# 新建Feature并且给其属性赋值
feature = ogr.Feature(layer.GetLayerDefn())
feature.SetField('Name', f['properties']['name'])
feature.SetField('CenterX', f['properties']['cp'][0])
feature.SetField('CenterY', f['properties']['cp'][1])
# 设置Feature的几何属性Geometry
polygon = ogr.CreateGeometryFromJson(str(f['geometry']))
feature.SetGeometry(polygon)
# 创建Feature
layer.CreateFeature(feature)
del feature
ds.FlushCache()
del ds

来源:https://blog.csdn.net/theonegis/article/details/80554993

0
投稿

猜你喜欢

  • 你是否有时想知道什么人访问你的站点,什么时间,IP地址等。下面我就这个问题向大家来阐述一下。这个例子使用文本文件来写入用户的信息创建一个lo
  • 由于一些读者对于960 Grid System CSS Framework的原理和使用方法比较感兴趣,暴风彬彬今天将和大家一同分享这篇关于9
  • IE 浏览器中 CSS Expression 特性的最大的问题:会反复执行,每秒钟可能执行了成百上千次,有严重的性能问题。如何对 CSS E
  • Javascript 正常取来源网页的URL只要用: document.referrer就可以了!但,如果来源页是Jav
  • ASP里两种常用的生成文件的方式是:利用ADODB.Stream生成文件和利用Scripting.FileSystemObject生成文件1
  • 在使用ORACLE的过程过,我们会经常遇到一些ORACLE产生的错误,对于初学者而言,这些错误可能有点模糊,而且可能一时不知怎么去处理产生的
  • 130 :文件格式不正确。(还不是很清楚错误的状况)  145 :文件无法打开。  1005:创建表
  • 今天来说说鄙人对input输入框在处理上的细节处理和心得,其实制作一个符合CSS标准、FF/IE7/IE6等主流浏览器全兼容、符合用户体验的
  • 原来图片自适应宽度一般都是通过Javascript来解决的,但是多少还是比较麻烦。还有一种通过设置外层容器overflow:hidden属性
  • caller 属性返回一个对函数的引用,该函数调用了当前函数。functionName.caller functionName 对象是所执行
  • 代码如下:--相信大家肯定经常会把数据导入到数据库中,但是可能会有些记录行的所有列的数据是null,这为null的数据是我们不需要 --现在
  • asp防止用户同时登陆的方法,实现这个功能可有两种方式:1.使用application用application对象:如果做的是大型社区,可能
  • 我们现在回到函数上。记得我们用 SUM 这个指令来算出所有的 Sales (营业额)吧!如果我们的需求变成是要算出每一间店 (store_n
  • 很多人可能认为门户网站首页设计只是把一些导航、资讯内容和广告堆积起来摆放得好看就可以了,虽然这个观点也并不是完全错误的,确实门户网站首页是由
  • 网页显示不正常,出现图片错位,文字跑远……等等,别急,试试IE8自带的”兼容性视图”功能吧!其实出现网页显示问题,一般不是您的电脑或者浏览器
  • 淡入淡出图片轮换轮播效果,可以做新闻图片推荐需要的拿去用,效果预览请点击运行代码相关效果推荐:迅雷首页新闻图片轮播效果js源码 <!D
  • 1、页签的表达。页签表达很清晰,当前页签突出,且层级包涵关系明确;看下图,一目了然的感觉,不用疑惑我在那部分里。不信?拿当当的对比一下,你感
  • 一、什么是索引 减少磁盘I/O和逻辑读次数的最佳方法之一就是使用【索引】 索引允许SQL Server在表中查找数据而不需要扫描整个表。 1
  • 很多的朋友一而再,再而三的在Server.Mappath上卡壳,cnbruce也是一遍两遍地重复,还是不能全部解决,所以通过下面的举例,希望
  • 作者:Dmitry @ Usability Post  版权所有 Copyright.译者:明月星光 @ UCD翻译小组原文:ht
手机版 网络编程 asp之家 www.aspxhome.com