私は数千のポリゴンを含むShapefileを持っています。C#でShapefileからWKTをエクスポートするには?
私はこのファイルをC#で読み込み、WKT formatted文字列のリストを出力する必要があります。
私はDotSpatialと"CatFood" ESRI Shapefile Readerを見ました。シェイプファイルをロードすることもできますが、WKTとしてエクスポートする方法を理解することはできません。
DotSpatialでは、唯一の例としてWktWriter
が使用され、Geometry
になります。 Shape
からGeometry
を取得する方法がわかりませんでした。
もっと適切なライブラリがありますか?
更新 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()
を使用している、私はthis sampleに従っていましたので、それはもともと逃した理由。それはShape
ではなく、ShapeRange
です。これは幾何学に変換できませんでした。
新しい質問
- 私は
fs.IndexMode = true
を設定すべきか?なぜ、なぜそうではないのですか?パフォーマンスや結果に影響がないようです。 fs.GetShape()
は、getAttributes
というブール値をとります。私は自分の形に属性を持っています、そして、それは真実か偽であるかにかかわらず出てくるようです。ここでも、いずれの方法でも目に見えるパフォーマンスの影響はありません。それは期待されていますか?- このようにして、WKTはシェイプファイルに格納されている実際の値を表しますか?あるいは、彼らは何らかの形で変身していますか?それはdotSpatialからのデフォルト設定を考慮に入れていますか?それらを変更することに心配すべきですか?
- インポートするシェイプファイルはworld timezone mapです。これには.prjファイルが含まれています。 dotSpatialはこれを考慮に入れていますか?もしそうでなければ、余分なことをする必要がありますか?
多くのありがとうございます!
ありがとう!私の更新された質問を、より多くの質問でご覧ください。 :) –