Permítanme describir la configuración de los datos. Una línea ha sido siempre como un conjunto de pares de coordenadas, uno para cada vértice. Esta matriz es variable en tamaño, en cualquier lugar de 2 a 200 pares de coordenadas en cada línea. Lo que estoy tratando de envolver mi mente alrededor es la mejor manera de crear estas líneas. Arcpy y ArcObjects ambas son opciones viables, pero ArcObjects es preferido debido a su velocidad (en general).
Tengo una lluvia de ideas un par de métodos, pero se quedan cortos, por alguna razón u otra:
1) yo podría utilizar la Polilínea de la clase con arcpy para crear las polilíneas y, a continuación, las Funciones de Copia, pero la geometría resultante no tendría la atribución necesaria para identificar puntos.
2) yo podría usar a XY A la Línea, pero esto sólo funciona con un par de punto, y el que necesita algo mucho más robusta.
El largo y corto es que necesito un método que puede crear una polilínea a partir de matrices y mantener un esquema de datos que he creado en una tabla. Una idea que tengo es crear dijo tabla y esquema, y entonces de alguna manera crear la polilínea y copiar su shape
de la propiedad a la tabla de salida, la migración sobre el ID y cualquier otra atribución que se necesita. Cómo se puede ir sobre la creación de la polilínea de la forma de la propiedad sin tener que recurrir a un intermediario shapefile? O, si no hay un método mejor que viene a la mente, por favor, comparte conmigo.
La actualización de Este código se parece a la obra!
IFeatureClass fClass = gpUtil.OpenFeatureClassFromString(path);
IFeatureCursor cursor = fClass.Insert(true);
IFeatureBuffer buffer = fClass.CreateFeatureBuffer();
<snip...>
string[] nodearray = a.Split(';');
foreach (string i in nodearray)
{
query.WhereClause = "\"PNT_ID\" = '" + i+"'";
Console.WriteLine(query.WhereClause.ToString());
ICursor search = table.Search(query, false);
IRow row = search.NextRow();
float x = float.Parse(row.get_Value(2).ToString());
float y = float.Parse(row.get_Value(3).ToString());
int id = int.Parse(row.get_Value(1).ToString());
point.X = x;
point.Y = y;
point.ID = id;
point.SpatialReference = sRef;
pCollection.AddPoint(point, ref Missing, ref Missing);
}
IGeometry5 polygeo = (IGeometry5)pCollection;
buffer.set_Value(1, polygeo);
buffer.set_Value(2, wayid);
cursor.InsertFeature(buffer);