Muestra las diferencias entre dos versiones de la página.
| Próxima revisión | Revisión previa | ||
|
fw:othersnet:easygis [2009/11/02 19:47] alfred creado |
fw:othersnet:easygis [2020/05/09 09:25] (actual) |
||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| ====== EasyGIS ====== | ====== EasyGIS ====== | ||
| - | Es una librería bastante sencilla para la creación de aplicaciones GIS. | + | Es una librería bastante sencilla para la creación de aplicaciones GIS con .NET. \\ |
| + | * Su página es: [[http://www.easygisdotnet.com/]]. | ||
| + | * Podemos encontrar ejemplos en: [[http://www.easygisdotnet.com/api/]] | ||
| + | |||
| + | |||
| + | |||
| + | ===== Creación de shapes ===== | ||
| + | Para la creación de shapefiles hemos de agregar como referencia la librería ''EGIS.ShapeFileLib.dll''. Mediante esta tendremos acceso a la estructura ''EGIS.ShapeFileLib.DbfFieldDesc'' la cual nos servirá para indicar\configurar los campos de información que existirán por cada registro de la shape. Para ello crearemos un array de ''DbfFieldDesc'' en el que especificamos cada campo: | ||
| + | <code csharp> | ||
| + | DbfFieldDesc[] d = new DbfFieldDesc[4]; | ||
| + | |||
| + | d[0].FieldLength = 5; | ||
| + | d[0].FieldName = "ID_TRAJECTE"; | ||
| + | d[0].FieldType = DbfFieldType.Number; | ||
| + | |||
| + | d[1].FieldLength = 3; | ||
| + | d[1].FieldName = "CODPUB_T"; | ||
| + | d[1].FieldType = DbfFieldType.Character; | ||
| + | |||
| + | d[2].FieldLength = 25; | ||
| + | d[2].FieldName = "D_TRAJECTE"; | ||
| + | d[2].FieldType = DbfFieldType.Character; | ||
| + | |||
| + | d[3].FieldLength = 5; | ||
| + | d[3].FieldName = "ID_LINIA"; | ||
| + | d[3].FieldType = DbfFieldType.Number; | ||
| + | </code> | ||
| + | Luego crearemos un objeto ''ShapeFileWriter'' mediante el método ''ShapeFileWriter.CreateWritter'', al que le pasamos los siguientes argumentos: | ||
| + | - La ruta donde crearemos la shape. | ||
| + | - El nombre del fichero shape. | ||
| + | - El tipo (dentro de la enumeración ''EGIS.ShapeFileLib.ShapeType'', que puede ser ''Point'', ''MultiPoint'', ''Poligon'', ''PolyLine''...) | ||
| + | - El array de ''DbfFieldDesc'' que define los campos. | ||
| + | <code csharp> | ||
| + | ShapeFileWriter sfw = ShapeFileWriter.CreateWriter("c:\\LiniesExportadesSAE\\", "Line", ShapeType.PolyLine, d); | ||
| + | </code> | ||
| + | Luego, por cada elemento\registro que queramos agregar a la shapefile llamaremos al método ''AddRecord'' del ''ShapeFileWriter''. Como en nuestro caso creamos una linia tendremos que ir agregando los puntos que la forman mediante un array de ''PointF'', luego crearemos un array de strings que contendrá los valores de cada campo definidos en el array de ''DbfFieldDesc''. | ||
| + | <code csharp> | ||
| + | PointF[] ps = new PointF[numSubVials]; | ||
| + | foreach (int i=0; i<numSubVials; i++) | ||
| + | ps[i] = new PointF(float.Parse(SubVials[i].x), float.Parse(SubVials[i].y)); | ||
| + | |||
| + | string[] values = new string[4]; | ||
| + | values[0] = t.id; | ||
| + | values[1] = fixString(t.cod_pub); | ||
| + | values[2] = fixString(t.denominacio); | ||
| + | values[3] = l.id; | ||
| + | |||
| + | sfw.AddRecord(ps, ps.Length, values); | ||
| + | </code> | ||
| + | |||
| + | Y luego, finalizaremos el writer: | ||
| + | <code csharp> | ||
| + | sfw.Close(); | ||
| + | </code> | ||
| + | ===== Lectura de Shapes ===== | ||
| + | ==== Lectura de la forma ==== | ||
| + | <code csharp> | ||
| + | string file = "c:\\Export_Output.shp"; | ||
| + | ShapeFile sf = new ShapeFile(file); | ||
| + | ShapeFileEnumerator sfEnum = sf.GetShapeFileEnumerator(); | ||
| + | while (sfEnum.MoveNext()) | ||
| + | { | ||
| + | PointF[] points = sfEnum.Current[0]; | ||
| + | int a = points.Length; | ||
| + | } | ||
| + | sf.Close(); | ||
| + | </code> | ||
| + | ==== Lectura de los datos ==== | ||
| + | |||
| + | ===== Notas ===== | ||
| + | ==== Elementos ==== | ||
| + | * {{fw:othersnet:egis_dt_2_2.zip|Ensamblados}} | ||
| + | * {{fw:othersnet:egis_api.zip|API}} | ||