なぜオープンソースを使用するのですか?
利点
1. 無料、個人および小規模企業に適しています
2. バグを見つけやすい
3. クロスプラットフォームで、Windows と Linux で使用できます
4.
欠点
1. ジオプロセッサが組み込まれていない
2. 使用している人はほとんどいません
オープンソースのRS/GISモジュール
1. 単純なベクトルデータの読み取りと書き込みはGDALの一部です
2 GDAL 地理空間データ抽象化ライブラリ:
a) ラスター データの読み取りと書き込み
b) ArcGIS も GDAL に基づいて開発されています
c) C++ ライブラリですが、Python を使用して
関連モジュール
1 を呼び出すことができます。 : 高速な配列処理はラスターデータにとって特に重要です
2。NumPy: 次世代の Numeric
3 より強力な gis ライブラリ http://www.gispython.org/
インポート ライブラリ:
import ogr
または:
from osgeo import ogr
普遍的な方法は次のとおりです:
try:
from osgeo import ogr
以外:
import ogr
特定のタイプのデータを読み取るには、それをロードする必要がありますまず、データ駆動型とは、オブジェクトが特定のデータ構造を「認識」できるようにオブジェクトを初期化することを意味します。
import ogr
driver = ogr.GetDriverByName('ESRI Shapefile')
データ駆動型ドライバーの open() メソッドはデータ ソース オブジェクトを返します
open(
ここで、更新 0 は読み取り専用を意味し、1 は書き込み可能を意味します:
from osgeo import ogr
driver = ogr.GetDriverByName('ESRI Shapefile')
filename = 'C:/Users/gongwei/Documents/My電子書籍 /python_and_sage/GDAL python/test/ospy_data1/sites.shp'
dataSource = driver.Open(filename,0)
dataSource が None の場合:
print '開けませんでした'
sys.exit(1)
print 'done!'
ファイル名は絶対パスである必要があることに注意してください。
コードを簡略化するために絶対パスを使用する必要があるため、データレイヤーを読み取るにはos.chdir()がよく使用されます
layer = dataSource.GetLayer(0)
一般的に、ESRIシェープファイルは次のように埋められます。 0. 入力しない場合、デフォルトは 0 です。
このデータ レイヤーにポイントがいくつあるか見てください。
n =layer.GetFeatureCount()
print 'feature count:', n
上下左右の境界を読み取る
extent =layer.GetExtent()
print 'extent:',エクステント
print 'ul: ',extent[0],extent[3]
print 'lr:',extent[1],extent[2]
ある要素の特徴を読む(ようやく本題に入る)ここを読むのがポイントです #別のidにする必要があります
print fid
さらに、フィーチャを順番に読み込んですべてのフィーチャをループします
feat =layer.GetNextFeature() #次を読みます
while feat:
feat =layer.GetNextFeature ()
later.ResetReading() #Reset
フィーチャーのジオメトリを抽出
geom = feat.GetGeometryRef()
geom.GetX()
geom.GetY()
print geom .
メモリを解放します
feature.Destroy()
データソースを閉じます。これは、ファイルシステム操作でファイルを閉じるのと同じです
dataSource.Destroy()
それを読んだ後の書き込み方法について話しましょう
新しいファイルを作成します
driver.CreateDataSource( ただし、このファイルがすでに存在することはできません。存在しないとエラーが発生します 新しいレイヤーを作成します dataSource.CreateLayer( 例: ds2 = driver.CreateDataSource('test.shp') layer2 = ds2.CreateLayer('test', geom_type=ogr. wkbPoint) shp ファイルを削除するには driver.DeleteDataSource ('test.shp') 新しいフィールドを追加するには、レイヤー内でのみ追加でき、データは存在できません。 追加されたフィールドの場合は文字列です。幅を設定する必要があります fieldDefn = ogr.FieldDefn( 'id', ogr.OFTString) fieldDefn.SetWidth(4) layer.CreateField(fieldDefn) 新しい機能を追加するには、まず前のステップを完了し、すべてのフィールドを追加する必要があります 次に、レイヤーから対応するフィーチャ タイプを読み取り、フィーチャを作成します featureDefn = Layer.GetLayerDefn() feature = ogr.Feature(featureDefn) ジオメトリを設定しますShape feature.SetGeometry(point) あるフィールドを設定 feature.SetField('id', 23)の値 レイヤーにフィーチャを書き込む layer.CreateFeature(feature) 上記は Python gdal チュートリアルです: ogr を使用してベクター データを読み書きする 詳細については、PHP 中国語 Web サイト (m.sbmmt.com) に注目してください。