Show me the code. from osgeo import ogr ogr.UseExceptions() # 首先定义每个省全称到简称的映射字典 names = { '北京':...= ogr.Open('...../data/省级行政区.shp', update=True) layer: ogr.Layer = ds.GetLayer() defs: ogr.FeatureDefn = layer.GetLayerDefn...defn.GetName()} -> {defn.GetType()} -> {defn.GetWidth()}') # 添加一个省简称的字段 field: ogr.FieldDefn = ogr.FieldDefn...注意我们这里新建的字段的类型是字符串类型ogr.OFTString,当然我们还可以新建其他类型的字段,例如整形ogr.OFTInteger,实数形ogr.OFTReal,日期型ogr.OFTDate等。
install osmium-tool # macOS brew install osmium-tool 使用以下命令进行检查: osmium check-refs input.osm 2.2 ogr2ogr...安装命令: # Ubuntu/Debian sudo apt-get install gdal-bin # macOS brew install gdal 基本用法命令如下: ogr2ogr -f "...inputfile OutputFormat:输出文件格式 outputfile:输出文件路径(转换后的文件存储路径) inputfile:输入文件路径(要转换的文件路径) 例:将osm文件转换为kml格式需运行 ogr2ogr...-f "KML" output.kml input.osm 若要单独提取points(点)或lines(线)或multipolygons(面)元素,可使用以下命令: ogr2ogr -f "KML"...output_nodes.kml input.osm points ogr2ogr -f "KML" output_lines.kml input.osm lines ogr2ogr -f "KML"
思路是我们遍历图层中的每一个Feature要素,然后通过ogr.Feature的SetField()方法更新属性值。 代码展示 Talk is cheap....Show me the code. from osgeo import ogr ogr.UseExceptions() # 打开一个Shapefile ds: ogr.DataSource = ogr.Open.../data/省级行政区.shp', update=True) layer: ogr.Layer = ds.GetLayer() # 填充属性值 for feature in layer: name...feature.SetField('NAME', name) # 修改完了记得Set一下 layer.SetFeature(feature) # 关闭数据集 ds = None 方法总结 首先,我们使用ogr.Open
代码展示 from pathlib import Path import ogr ogr.UseExceptions() # 读取被裁剪的数据 in_ds: ogr.DataSource = ogr.Open.../data/County.shp') in_lyr: ogr.Layer = in_ds.GetLayer() # 读取裁剪范围数据 method_ds: ogr.DataSource = ogr.Open...driver: ogr.Driver = ogr.GetDriverByName('ESRI Shapefile') if Path(fname).exists(): driver.DeleteDataSource...(fname) # 新建DataSource,Layer out_ds: ogr.DataSource = driver.CreateDataSource(fname) out_lyr: ogr.Layer...方法总结 首先我们使用ogr.Open()函数分别读取被裁剪的数据以及裁剪范围数据;使用GetLayer()方法获取数据的图层。裁剪范围数据在GDAL中被称为Method Layer。
现在OGR部分并不代表任何东西,只是历史延续。...创建和修改字段 创建字段定义:ogr.FieldDefn() coord_fld = ogr.FieldDefn('X_short', ogr.OFTReal) 修改字段定义:coord_fld.SetXXXX...(ogr.wkbMultiPoint) faucet = ogr.Geometry(ogr.wkbPoint) faucet.AddPoint(67.5, 16) faucets.AddGeometry...(87.5, 24) garden1 = ogr.Geometry(ogr.wkbPolygon) garden1.AddGeometry(box1) # 第二个环 box2 = ogr.Geometry...) garden2 = ogr.Geometry(ogr.wkbPolygon) garden2.AddGeometry(box2) # 闭合 gardens = ogr.Geometry(ogr.wkbMultiPolygon
OGR读取数据的流程(读取中国行政区划shp文件): #导入库 try: from osgeo import ogr except: import ogr #加载相应数据类型的驱动,相当于初始化一个对象...= ogr.FieldDefn("aqi", ogr.OFTReal) layer.CreateField(field_aqi) layer.CreateField(ogr.FieldDefn("latitude...", ogr.OFTReal)) layer.CreateField(ogr.FieldDefn("longitude", ogr.OFTReal)) #创建要素 for i in AQI.index...(0,100) outring.AddPoint(0,0) inring = ogr.Geometry(ogr.wkbLinearRing)inring = ogr.Geometry(ogr.wkbLinearRing...from osgeo import ogr except: import ogr #加载相应数据类型的驱动,相当于初始化一个对象 driver = ogr.GetDriverByName
基本思路 使用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...) # 添加属性定义 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
from pathlib import Path import ogr ogr.UseExceptions() in_ds: ogr.DataSource = ogr.Open('...../data/China.shp') in_lyr: ogr.Layer = in_ds.GetLayer() fname: str = 'Buffer.shp' # 创建输出Buffer文件 driver...: ogr.Driver = ogr.GetDriverByName('ESRI Shapefile') if Path(fname).exists(): driver.DeleteDataSource...(fname) # 新建DataSource,Layer out_ds: ogr.DataSource = driver.CreateDataSource(fname) out_lyr: ogr.Layer...这里我们的空间投影直接从原始的Shapefile中进行读取,输入的空间几何体类型设置为ogr.wkbPolygon。
from osgeo import ogr ogr.UseExceptions() ds: ogr.DataSource = ogr.Open('...../data/Provinces.shp') # 注意Layer的名称不能包含中文 layer: ogr.Layer = ds.GetLayer() # 选择出中学数量大于1万所的省份 query: str...selected: print(feature.GetField('NAME')) # 选择出中学数量最多的省份 # 我尝试使用MAX函数和嵌套的SELECT语句进行实现,但是执行报错,应该是OGR...然后使用ExecuteSQL()方法执行查询,得到的查询结果仍然是一个ogr.Layer图层类,但是图层中的要素属性只包含我们查询语句中指定的字段 对于第二个案例,我们本来可以使用一个嵌套的SELECT...from osgeo import ogr ogr.UseExceptions() ds: ogr.DataSource = ogr.Open('..
代码演示 import ogr ogr.UseExceptions() ds_province: ogr.DataSource = ogr.Open('...../data/Provinces.shp') l_province: ogr.Layer = ds_province.GetLayer() # 使用filter()方法找出湖北省 f_hubei: ogr.Feature...= next(filter(lambda f: '湖北' in f.GetField('NAME'), l_province)) ds_city: ogr.DataSource = ogr.Open...代码演示 import ogr ogr.UseExceptions() ds: ogr.DataSource = ogr.Open('...../data/Cities.shp') cities: ogr.Layer = ds.GetLayer() # 使用filter()方法找出武汉市 city: ogr.Feature = next(filter
两种解决方案: 一、将整个shapefile转为GeoJSON然后直接导入mongoDB数据库中 首先,将shapefile数据转为WGS84地理坐标,然后使用GDAL的命令行工具ogr2ogr...进行格式的转换,转换命令如下: ogr2ogr -f geoJSON continents.json continents.shp 删除生成JSON文件的前两行{ "type": "FeatureCollection
Show me the code. from osgeo import ogr ogr.UseExceptions() # 从给定图层中读取字段的定义,根据给定字段名称找到该字段的索引编号 def...get_field_index_by_name(layer: ogr.Layer, name: str): defs: ogr.FeatureDefn = layer.GetLayerDefn(...).GetName(): return i raise ValueError(f'{name} not found') # 打开一个Shapefile文件 ds: ogr.DataSource...= ogr.Open('...../data/省级行政区.shp', update=True) layer: ogr.Layer = ds.GetLayer() # 删除Abbr字段 index = get_field_index_by_name
方法介绍 跟栅格数据投影转换一样,使用GDAL库,我们有两种方法进行矢量数据的重投影: 使用命令工具及其对应的命令行API接口进行转换(简单,准确,实践中一定要用这种方法) GDAL提供了ogr2ogr...命令行工具进行矢量数据投影转换,命令如下:ogr2ogr -t_srs "+proj=aea +lat_1=25 +lat_2=47 +lat_0=30 +lon_0=105 +x_0=0 +y_0=0...units=m +no_defs """ gdal.VectorTranslate(dst_file, src_file, dstSRS=srs_def, reproject=True) src_ds = ogr.Open...src_layer = src_ds.GetLayer(0) src_srs = src_layer.GetSpatialRef() # 输入数据投影 调用基本API函数实现 from osgeo import ogr...src_feature: geometry = src_feature.GetGeometryRef() geometry.Transform(ctx) dst_feature = ogr.Feature
4 GDAL/OGR功能特点· 多格式支持:GDAL/OGR支持多种栅格和矢量地理空间数据格式,包括ESRI Shapefiles、S-57、SDTS、PostGIS、Oracle Spatial等。...· 多语言支持:GDAL/OGR提供了多种编程语言的绑定,如C、C++、Perl、Python、Java、C#等。· 高性能:GDAL/OGR使用面向对象的C++语言编写,具有很高的执行效率。...应用场景· 遥感数据处理:GDAL/OGR适用于遥感数据的处理和分析,支持多种卫星数据和地理信息系统数据格式。...· 地理空间数据转换:GDAL/OGR提供了强大的数据转换功能,适用于需要跨平台数据处理的场景。...QGIS、GeoServer、PostgreSQL with PostGIS、GDAL/OGR、MapServer和CesiumJS等开源项目在各自的应用领域中表现出色,广泛应用于政府、企业、科研等多个领域
PointOnSurface(Geometry self) -> Geometry OGRGeometryH OGR_G_PointOnSurface(OGRGeometryH hGeom) Returns...If OGR is built without the GEOS library, this method will always fail, issuing a CPLE_NotSupported error...OGR 1.10 Centroid(Geometry self) -> Geometry int OGR_G_Centroid(OGRGeometryH hGeom, OGRGeometryH hCentroidPoint...If OGR is built without the GEOS library, this function will always fail, issuing a CPLE_NotSupported...import ogr p = ogr.CreateGeometryFromWkt('POLYGON((1 1,5 1,5 5,1 5,1 1),(2 2,2 4,4 4,4 2,2 2)) ') #
实现的关键代码如下: package com.lzugis.gdal; import org.gdal.ogr.*; import org.gdal.ogr.Driver; import org.gdal.gdal....*; public class GdalShpTest { public static void main(String[] args) { // 注册所有的驱动 ogr.RegisterAll...String strVectorFile = "D:\\data\\china\\capital.shp"; //打开数据 DataSource ds = ogr.Open...); Driver dv = ogr.GetDriverByName("GeoJSON"); if (dv == null) {
ISO 8211lib是C++编写的开源库,专门用于读取符合ISO 8211封装标准的数据文件,如S-57电子海图数据格式和空间数据传输标准数据集(SDTS);GDAL是一个开源栅格空间数据转换库,其中OGR...OGR中关于S-57读取的官方文档在http://www.gdal.org/drv_s57.html可以看到,其中需要注意OGR的S-57驱动模块将处理S-57文件里所有的feature要素,其中S-57...在OGR中,从S-57文件读取的所有要素根据物标类型(OBJL)归属于相应的图层,可以类比于GIS里的shape格式,对应的图层下有要素(feature),要素下面有字段(field)和几何对象(geometry...directory with the s57objectclasses.csv and related files,具体可以参见 http://osgeo-org.1560.x6.nabble.com/OGR-to-access-s57
当我们安装GDAL时,我们还将获得OGR(OpenGIS简单功能参考实现)和命令ogr2ogr。这是一个矢量数据转换库,我们将把它用于将Shapefile转换为PostGIS可以使用的数据。...使用包管理器安装GDAL: sudo apt-get install gdal-bin 现在再次切换到用户postgres: sudo -i -u postgres 现在将使用ogr2ogr把Natural...Earth的Shapefile转换为PostGIS表,如下所示: ogr2ogr -f PostgreSQL PG:dbname=test1 -progress -nlt PROMOTE_TO_MULTI...ogr2ogr命令将基于文件中的前几个特征对几何类型进行假设。我们导入的数据包含多边形类型和多部分多边形或MultiPolygons的混合。...最后,我们指定输入文件的路径: /home/sammy/nedata/ne_110m_admin_0_countries.shp 访问ogr2ogr网站查看完整的选项。
可供选择的矢量格式数目很饿的,开源矢量库OGR支持超过86种矢量格式,FME支持超过188种矢量格式。...库,python中解析Shapefile文件的模块大都是基于OGR库的。...库 OGR库是python处理矢量数据的通用库,也是许多处理矢量数据包的依赖项。...from osgeo import ogr shp=ogr.Open("point.shp") layer=shp.GetLayer() for feature in layer: geometry...哭的数据访问功能提供了一套简洁的python api,大大提高了OGR库在python中的易用性。
此外,GDAL还通过OGR(OGR Simple Features Library)对矢量数据进行处理。OGR提供了丰富的矢量数据模型,包括点、线、多边形等几何要素,以及要素类、图层和数据集等概念。