OGRライブラリの非常に単純なラッパーであるSean GilliesのFionaを使用します(The Fiona User Manual)
シェープファイルのすべての要素(スキーマ、レコード)は、Python辞書を使用して処理されます。
例としての私のシェープファイルの1つのスキーマ:
{'geometry': 'LineString', 'properties': {u'faille': 'str:20', u'type': 'str:20', u'id': 'int'}}
シェープファイルの1つのレコード:
{'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'}}
シェープファイルを複製するには:
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']))})
大きなシェープファイルを多数の小さなシェープファイルに分割する場合、すべてがforループで行われますが、元のシェープファイルのすべてのスキーマは、schema = input.schema.copy()
およびを使用して辞書に保存されます。{'properties': elem['properties']
QGISまたはGRASSでベクター線方位を見つける方法を参照してください。例として
- シェープファイルを分割する
- 分割されたシェープファイルに元のシェープファイルの属性を保持する
- 分割したシェープファイルに新しいフィールドを追加します
Mac OS XまたはLinuxユーザーの場合、インストールは簡単です。Windowsユーザーは、Python拡張パッケージ用の Christoph Gohlke 非公式Windowsバイナリのバージョンを使用してください。