我开始了解GIS数据。我有兴趣使用Python查看这些数据。我现在正在学习shapefile。我正在学习osgeo / ogr。我遇到了#remove the .php extention for root dir only
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+)\.php
RewriteRule ^/?(.*)\.php$ /$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*?)/?$ $1.php
方法。现在我无法理解shapefile中的图层。是否有必要将某个要素添加到图层?
当我尝试按如下方式创建多个图层时:
GetLayer()
我得到的是与shapeData = driver.CreateDataSource('customer_points.shp')
layer = shapeData.CreateLayer('customs', spatialReference, osgeo.ogr.wkbPoint)
layer = shapeData.CreateLayer('customs1', spatialReference, osgeo.ogr.wkbPoint)
相对应的shapefile,只有一层--- customer_points
有效,但GetLayer(0)
返回GetLayer(1)
我也得到与None
对应的shapefile
所以我能够通过从第一个shapefile中读取第二层来检索添加到customs1
的功能,但是从第二个shapefile中读取第一层
答案 0 :(得分:1)
ESRI shapefile格式确实不支持将功能分组到单独的层中。
然而,OGR以osgeo.ogr.DataSource的形式提供了矢量数据的抽象源,假设这些特征被分组为一个或多个层。图层从0开始编号,osgeo.ogr.DataSource.GetLayer(self, iLayer=0)
函数提供了一个方便的默认设置,用于从第一层提取数据,恰好是数据源为shapefile时唯一的图层。
如果要将矢量数据保存到shapefile中,根据OGR模型,您必须创建一个osgeo.ogr.DataSource.CreateLayer(self, *args, **kwargs)
的图层,并为此图层对象添加要素。