从shapefile中提取边界信息

时间:2017-08-13 16:34:08

标签: shapefile qgis

我第一次使用shapefile,我正在尝试创建一个包含每个多边形边界的数据库。到目前为止,使用qgis和.dbf文件,我一直无法弄清楚如何做到这一点。有没有办法从shapefile中获取边界?

我正在使用人口普查局的邮政编码shapefile。这是一个链接。 https://www.census.gov/geo/maps-data/data/cbf/cbf_zcta.html

由于

1 个答案:

答案 0 :(得分:0)

对于边界框,您可以通过PyQGIS或QGUIS GUI完成。请记住,边界框是演变几何体的最小矩形,因此它由4个坐标构成:

mBluetoothAdapter != null && mBluetoothAdapter.isEnabled()

所以你需要c1 = [x_min, y_min] c2 = [x_min, y_max] c3 = [x_max, y_min] c4 = [x_max, y_max] 来构建这些坐标。我将首先发布PyQGIS答案(我们在StackOverflow中)以提取这4个值:

x_min, x_max, y_min, y_max

对于QGIS GUI,只需使用与上述代码相同的表达式Field Calculator,创建4个新字段(使用double作为数据类型):

第1栏:from qgis.core import * from qgis.utils import * from PyQt4.QtCore import QVariant # Import layer layer = QgsVectorLayer('/path/to/cb_2016_us_zcta510_500k.shp','census_boundaries','ogr') if not layer.isValid(): print "Layer failed to load!" else: print "Layer was loaded successfully!" # add to the canvas QgsMapLayerRegistry.instance().addMapLayer(layer) # start editing layer.startEditing() # for field name and expression fields = 'x_min','x_max','y_min','y_max' for i in range(0,4): field = QgsField( fields[i], QVariant.Double ) # create field layer.dataProvider().addAttributes([field]) layer.updateFields() idx = layer.fieldNameIndex(fields[i]) # extract field index e = QgsExpression(fields[i]+ '($geometry)' ) # use a field expression to calculate value. ie: x_min($geometry) e.prepare( layer.pendingFields() ) for f in layer.getFeatures(): # fo it for all field f[idx] = e.evaluate( f ) layer.updateFeature( f ) layer.commitChanges() #save changes

第2栏:x_min($geometry)

第3栏:x_max($geometry)

第4栏:y_min($geometry)