Utilice Fiona de Sean Gillies, un contenedor muy simple de la biblioteca de OGR ( Manual de usuario de Fiona )
Todos los elementos de un shapefile (esquema, registros) se procesan utilizando diccionarios Python:
esquema de uno de mis shapefiles como ejemplo:
{'geometry': 'LineString', 'properties': {u'faille': 'str:20', u'type': 'str:20', u'id': 'int'}}
un registro en el archivo de forma:
{'geometry': {'type': 'LineString', 'coordinates': [(269884.20917418826, 151805.1917153612), (270409.89083992655, 153146.21637285672), (272298.05355768028, 154047.38494269375), (272941.74539327814, 155484.96337552898), (272169.31519056071, 156117.92701386689)]}, 'id': '1', 'properties': {'faille': u'de Salinas', 'type': u'normale'}}
para duplicar un archivo de forma:
from shapely.geometry import mapping, shape
import fiona
# Read the original Shapefile
with fiona.collection('original.shp', 'r') as input:
# The output has the same schema
schema = input.schema.copy()
# write a new shapefile
with fiona.collection(''file1.shp', 'w', 'ESRI Shapefile', schema) as output:
for elem in input:
output.write({'properties': elem['properties'],'geometry': mapping(shape(elem['geometry']))})
Si desea dividir un archivo de forma grande en muchos más pequeños, todo tiene lugar en el bucle for pero todos los esquemas del archivo de forma original se conservan en el diccionario con schema = input.schema.copy()
y{'properties': elem['properties']
ver ¿Cómo encuentro el rumbo de línea vectorial en QGIS o GRASS? por un ejemplo de
- dividir un archivo de forma
- preservar los atributos del archivo de forma original en el archivo de forma dividida
- y agregue un nuevo campo en el archivo de forma dividido
Para usuarios de Mac OS X o Linux, es fácil de instalar. Para usuarios de Windows, use la versión de Christoph Gohlke Binarios no oficiales de Windows para paquetes de extensión de Python
Para aquellos que luchan por instalar las bibliotecas anteriores:
fuente