3 votos

guardar la IGeometría en el disco como un archivo Layer

¿Cómo puedo guardar una IGeometría en el disco como un archivo Layer?

ArcEngine 10, C#, VS2010

Edición 1: Con la sugerencia de Jason Scheirer he logrado convertir un punto en un shapefile - y voy a publicar el código aquí para la comunidad.

string strFolder = @"C:\temp";
string strName = "NewShapeFile"; //don't include .shp extension
string strShapeFieldName = "Shape";
ShapefileWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass();
IFeatureWorkspace pFWS = pWorkspaceFactory.OpenFromFile(strFolder, 0) as IFeatureWorkspace; 
IFields pFields = new FieldsClass();
IFieldsEdit pFieldsEdit = pFields as IFieldsEdit;
IField pField = new FieldClass();
IFieldEdit pFieldEdit = pField as IFieldEdit;
pFieldEdit.Name_2 = strShapeFieldName;  //Name is read-only Name_2 is writeable -- don't ask me why
pFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry; 
IGeometryDef pGeomDef = new GeometryDefClass();
IGeometryDefEdit pGeomDefEdit = pGeomDef as IGeometryDefEdit;
pGeomDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPoint;
pGeomDefEdit.SpatialReference_2 = CrowWingCoordinates;
pFieldEdit.GeometryDef_2 = pGeomDef;
pFieldsEdit.AddField(pField);
pField = new FieldClass();
pFieldEdit = pField as IFieldEdit;
pFieldEdit.Length_2 = 25;
pFieldEdit.Name_2 = "TextField";
pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
pFieldsEdit.AddField(pField);
IFeatureClass pFeatClass = pFWS.CreateFeatureClass(strName, pFields, null, null, esriFeatureType.esriFTSimple, strShapeFieldName, "");
IFeatureBuffer fb = pFeatClass.CreateFeatureBuffer();
IFeature feature = pFeatClass.CreateFeature(); 
IFeatureCursor featureCursor = pFeatClass.Insert(true);
double x = -94.105797; 
double y = 46.559214; 
IPoint p = new PointClass(); 
p.SpatialReference = gcs;
p.PutCoords(x, y); 
p.Project(myCoordinates); 
IGeometry geometry = p as IGeometry;
fb.Shape = p;
featureCursor.InsertFeature(fb);
featureCursor.Flush();

4voto

Paul Puntos 555

Un archivo de capa no contiene ningún dato geográfico: todo lo que contiene son punteros a fuentes de datos y simbología. Tendrá que guardar su IGeometry al disco como una Feature Class. Si a continuación se obtiene el IName para la clase de característica, podría abrir un archivo de capa en el disco, punto a esa clase de característica y guardar una copia de vuelta.

Flujo de trabajo:

  1. Crear una nueva clase de característica (shapefile)
  2. Escriba su geometría en él con un cursor de inserción
  3. Abrir archivo de capa con simbología predefinida
  4. Establece su raíz ILayer a la fuente de datos de IName del shapefile
  5. Activar las rutas relativas en el archivo de capa
  6. Guarde una copia en el mismo directorio que el shapefile

La alternativa superior es utilizar un paquete de capas con el Herramienta "Package Layer .

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X