Ho uno Shapefile che contiene diverse migliaia di poligoni.Come esportare WKT da uno Shapefile in C#?
Ho bisogno di leggere da questo file in C# e di stampare un elenco di stringhe WKT formatted.
Ho guardato a DotSpatial e allo "CatFood" ESRI Shapefile Reader. Posso ottenere sia per caricare lo shapefile bene, ma non riesco a capire come poi esportare come WKT.
In DotSpatial, gli unici esempi che ho trovato utilizzano uno WktWriter
che accetta uno Geometry
. Non riuscivo a capire come ottenere un Geometry
da un Shape
.
C'è una libreria più appropriata per questo?
Aggiornamento
Grazie alla risposta di mdm20, sono stato in grado di scrivere il seguente:
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);
}
}
La ragione per cui ho perso in origine è perché stavo seguendo this sample, che utilizza fs.ShapeIndices
invece di fs.GetShape()
. Questo non restituisce uno Shape
, ma uno ShapeRange
, che non è stato possibile convertire in una geometria.
Nuove domande
- dovrei essere fissando
fs.IndexMode = true
? Perché o perché no? Non sembra avere alcun impatto sulle prestazioni o sui risultati. fs.GetShape()
prende un booleano chiamatogetAttributes
. Ho degli attributi sulle mie forme e sembrano capire se questo è vero o falso. Anche in questo caso, non vi è alcun impatto notevole sulle prestazioni in entrambi i casi. È previsto?- Ottenendo in questo modo, il WKT rappresenta i valori effettivi memorizzati nello shapefile? O si sono trasformati in qualche modo? Sta prendendo in considerazione le impostazioni predefinite di dotSpatial e dovrei preoccuparmi di modificarle?
- Lo shapefile che sto importando è lo world timezone map. Contiene un file .prj. DotSpatial tiene conto di ciò e, in caso contrario, devo fare qualcosa in più?
Grazie mille!
Grazie! Si prega di vedere la mia domanda aggiornata ... con più domande. :) –