Tengo un problema al insertar características con la clase de característica de polígono en FGDB. Este es mi código:
... initialising some fields (does not affect performance)
m_featureBuffer.Shape = CreateShape(feature);
m_insertCursor.InsertFeature(m_featureBuffer);
Crear forma:
protected override ESRI.ArcGIS.Geometry.IGeometry CreateShape(IAbstractFeature feature)
{
IArea area = (IArea)feature;
ESRI.ArcGIS.Geometry.IPointCollection polygon = new ESRI.ArcGIS.Geometry.PolygonClass();
foreach (Point2D point2d in area.Polygon.OuterBoundaryIs.Coordinates)
{
ESRI.ArcGIS.Geometry.IPoint point = new ESRI.ArcGIS.Geometry.PointClass();
point.PutCoords(point2d.X, point2d.Y);
polygon.AddPoint(point);
}
return (ESRI.ArcGIS.Geometry.IGeometry)polygon;
}
En este caso, la inserción de ~1500 polígonos lleva unos ~110 segundos. Si comento esta línea
m_featureBuffer.Shape = CreateShape(feature);
¡la inserción tarda ~10 segundos! Si creo polígonos vacíos y los paso en la propiedad Shape del buffer de características, también tarda ~10 segundos.
He intentado utilizar el IFeatureClassLoad según el ejemplo de ESRI, pero no ayuda al rendimiento.
0 votos
¿Para qué sirve la función CreateShape? ¿Está construyendo nuevos polígonos a partir de los límites exteriores de los polígonos entrantes? Parece como si tuvieras que hacer un bucle a través de un número potencialmente desconocido de vértices dependiendo del tamaño del polígono y la complejidad y construir un nuevo polígono a partir de vértices individuales. Creo que esta es la parte lenta. ¿Has considerado construir la geometría que quieres a partir de anillos de polígonos en lugar de vértices?
0 votos
Tengo un array de puntos como entrada. Traté de construir anillos de ellos y pasar a AddGeometry método de IGeometryCollection interfaz de polígono, pero no ayudó.
0 votos
¿Por qué puntos? ¿Es necesario hacer en un nivel tan bajo? ¿Por qué no iterar a través de los anillos poligonales y utilizar el que desee?
1 votos
Vale, intentaré explicártelo. Tengo un archivo XML que necesito para analizar y construir características de los datos que se presentan en este archivo. Para los polígonos - los datos son una matriz de puntos de los límites exteriores e interiores. No tengo anillos. Tengo puntos.
0 votos
Con respecto a su última edición, por favor, publique su solución como una respuesta para el beneficio de otros lectores.