数千のポリゴンを含むシェープファイルがあります。
このファイルからC#で読み取り、WKT形式の文字列のリストを出力する必要があります。
DotSpatialと「CatFood」ESRIシェープファイルリーダーを見ました。シェープファイルを正常にロードすることはできますが、WKTとしてエクスポートする方法がわかりません。
DotSpatialでは、私が見つけた唯一の例は、WktWriter
をとるaを使用していますGeometry
。からを取得する方法がわかりませんでしGeometry
たShape
。
これにより適したライブラリはありますか?
アップデート
mdm20の回答のおかげで、私は次のように書くことができました。
using (var fs = FeatureSet.Open(path))
{
var writer = new WktWriter();
var numRows = fs.NumRows();
for (int i = 0; i < numRows; i++)
{
var shape = fs.GetShape(i, true);
var geometry = shape.ToGeometry();
var wkt = writer.Write((Geometry) geometry);
Debug.WriteLine(wkt);
}
}
もともと見逃したのは、の代わりにを使用するこのサンプルをフォローしていたためです。これは、ではなく、を返します。これは、ジオメトリに変換できませんでした。fs.ShapeIndices
fs.GetShape()
Shape
ShapeRange
新しい質問
- 設定する必要があります
fs.IndexMode = true
か?なぜまたはなぜそうではないのですか?パフォーマンスや結果に影響はないようです。 fs.GetShape()
と呼ばれるブール値を取りますgetAttributes
。私は自分の形に属性を持っています、そしてそれらはこれが真であるか偽であるかを通り抜けているようです。繰り返しますが、どちらの方法でも顕著なパフォーマンスへの影響はありません。それは期待されていますか?- このように取得することで、WKTはシェープファイルに保存されている実際の値を表しますか?それとも、何らかの形で変化していますか?dotSpatialのデフォルト設定を考慮に入れていますか?それらの変更について心配する必要がありますか?
- インポートしているシェープファイルは、ワールドタイムゾーンマップです。.prjファイルが含まれています。dotSpatialはこれを考慮に入れていますか?そうでない場合は、何か特別なことをする必要がありますか?
どうもありがとう!