0

マップ シェープ ファイル (.shp) または osm xml があるとします。ArcGIS や QGIS などの GIS 指向プログラムでさまざまなレイヤーからさまざまな種類のデータを表示できます。しかし、この情報をプログラムで取得するにはどうすればよいでしょうか? そのための特定のライブラリはありますか?私が本当に探しているのは、特定の場所で風景/地形情報 (森林、川、都市、高速道路など) を取得するためのgetMapData(longitude, latitude)のようなものです。

ご回答ありがとうございます。

4

3 に答える 3

1

ラスター データとベクター データのどちらを使用する方がよいかは、何を達成したいかによって異なります。

グリッドを使用してエリアを地理的特徴のコンテナーの配列として細分化している場合は、ベクター データを使用してください。これを行うには、ポリゴン グリッド ファイルを作成し、それを各データ レイヤーと交差させます。次に、配列内のセルの位置を表す ID フィールドを追加できます (したがって、既知の緯度/経度座標 (左下としましょう) に対する相対位置です)。または、空間クエリを使用して、ベクター グリッド ファイル内のポリゴンを選択し、それに含まれる他のファイル内のすべてのフィーチャを検索して、データにアクセスすることもできます。

OTOH、存在/不在に基づいて多機能分析を行いたい場合は、ラスター分析のルートをたどる方がよいかもしれません。あなたが言ったことから、これがあなたが達成しようとしていることだと直感しましたが、まだ 100% 確実ではありません。適切な解像度のブール値ラスターのセットを作成し、そのセットに対して数学演算 (加算、減算、平均など - 質問内容に応じて) を実行することで、これを処理します。

動物の移動を見ているとしましょう。あなたのモデルが、小川、生け垣、町はすべて移住の障害であると想定しているとしましょう。しかし、道路はエリアを横断する可能性を減らすだけです。したがって、値を 0.5 に設定することにした道路を除いて、それぞれのケースで障害物を '1' の値に、NoData を '0' に変換します。次に、すべてのラスターを 1 つの大きなスタックにまとめて、移行ルートを予測できます。

これは単純な例ですが、あなたが何をしたいのかについてさらに多くの情報が必要な理由がわかるでしょう。

于 2011-12-21T17:52:31.163 に答える
1

シェープファイルまたは osm xml ファイルは、幾何学的形状を保持する単なるコンテナです。これらのファイルを読み取ってデータを抽出できるソフトウェア ライブラリは数多くあります。GDAL/OGRを出発点として検討することをお勧めします。

getMapData(longitude, latitude)のようなメソッドは、基本的に検索/クエリ関数です。もう少し具体的にする必要があります。ポイントを含むジオメトリ、ポイントからの距離内にあるジオメトリが必要ですか?

ブルートフォースアルゴリズムを使用してマップデータを見つけることができます

for shape in shapefile:
    if shape.contains(query_point):
        return shape

または、RTree、KDTree、QuadTree などのより高度なアルゴリズム/データ構造を使用することもできます。マップ データのクエリを開始する最も簡単な方法は、マップ データを空間データベースにロードすることです。PostgreSQL+PostGISSpatiaLiteを調査することをお勧めします

于 2011-12-15T22:14:25.580 に答える
0

また、別々に、または GDAL/OGR と組み合わせて使用​​できる 2 つの空間対応データベースであるSpatialiteおよび/またはPostGISを参照することもできます。

実際の実装は、達成したい内容に大きく依存するため、ユースケースをより詳細に説明するというチャールズの要求に同意する必要があります。これを読んだところでは、データを一連の整列されたラスターに変換して、3 次元配列としてオーバーレイして扱うことができます。

于 2011-12-21T14:22:49.037 に答える