Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad

Eclipse y geotools inegi, Apuntes de Informática

investigacion de eclipse con geotools

Tipo: Apuntes

2020/2021

Subido el 17/02/2021

christian-ed-ror
christian-ed-ror 🇲🇽

1 documento

1 / 19

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Resumen Eclipse con GEOTOOLS
Contenido
Tips de instalación correcta................................................................................................................2
Abrir un archivo shape.shp................................................................................................................7
Crear archivo. Shp a partir de un csv..................................................................................................8
Como administrar archivos de datos................................................................................................12
Como llenar una tabla con información........................................................................................... 12
Manejo de imágenes........................................................................................................................ 14
Creando estilos a mano....................................................................................................................16
Fuentes:...........................................................................................................................................19
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13

Vista previa parcial del texto

¡Descarga Eclipse y geotools inegi y más Apuntes en PDF de Informática solo en Docsity!

Resumen Eclipse con GEOTOOLS

  • Tips de instalación correcta................................................................................................................ Contenido
  • Abrir un archivo shape.shp................................................................................................................
  • Crear archivo. Shp a partir de un csv..................................................................................................
  • Como administrar archivos de datos................................................................................................
  • Como llenar una tabla con información...........................................................................................
  • Manejo de imágenes........................................................................................................................
  • Creando estilos a mano....................................................................................................................
  • Fuentes:...........................................................................................................................................

Tips de instalación correcta.

Todos los proyectos que se realizan con la paquetería geotools tienen que realizarse con

M2Eclipse plugin, por lo cual presento los pasos para crear proyectos los cuales sean

compatibles con los plugin.

1. Archivo> Nuevo> Otro en la barra de menú

2. Seleccione el asistente Maven> Proyecto Maven y presione Siguiente para

abrir el asistente del Proyecto New Maven

3. Los valores predeterminados de la página del proyecto New Maven están

bien, presione Siguiente

4. El valor predeterminado de maven-archtype-quickstart está bien,

presione Siguiente

6. Presione Finalizar para crear el nuevo proyecto.

Todos los proyectos en los que se usa geotools y usando maven usan paqueterías

las cuales debemos de instanciar o direccionar un repositorio donde vamos a

encontrar las importaciones y las configuraciones, esto se hace a través de un

archivo xml que se maneja interno al proyecto que se desarrolla.

A continuación muestro como configurar el archivo de formato xml el cual se

encarga de cargar las configuraciones necesarias para crear el proyecto.

1. Abra pom.xml en su nuevo proyecto. Puede ver parte de la información que

ingresamos anteriormente.

2. Este editor le permite describir todo tipo de cosas; En aras del tiempo, vamos

a omitir la larga explicación y le pediremos que haga clic en

la pestaña pom.xml.

3. Para hacer uso de GeoTools vamos a agregar tres cosas a este archivo

pom.xml.

4. En la parte superior después de moduleVersion agregue un elemento

de propiedades que defina la versión de GeoTools que queremos usar (2.7.

para este ejemplo).

  1. <project.build.sourceEncoding> UTF-8 </project.build.sourceEncoding>
  2. <geotools.version> 2.7-M2 </geotools.version>

9. Vamos a agregar una dependencia a los tarros gt-main y gt-swing

de GeoTools. Tenga en cuenta que estamos haciendo uso de

geotools.version definida anteriormente.

junit junit 3.8.1 test org.geotools gt-shapefile

 Si las dependencias no se actualizan automáticamente, utilice Proyecto ‣

Limpiar

Después de configurar esto podremos iniciar en la creación y ejecución de proyectos

con geotools y maven en el entorno de desarrollo eclipse.

Como se debería de ser el geootools ya incorpora muchas características

prediseñadas las cuales nos permiten crear aplicaciones muy fácilmente ya incluyen

controles para manejar la información geográfica de manera sencilla.

Códigos sencillos para crear aplicaciones.

Abrir un archivo shape.shp

Link al tutorial completo: https://docs.geotools.org/stable/tutorials/quickstart/eclipse.html

// muestra un diálogo de selección de archivo de almacén de datos para shapefiles File file = JFileDataStoreChooser. showOpenFile ( "shp" , nulo ); si ( archivo == nulo ) { retorno ; } Tienda FileDataStore = FileDataStoreFinder. getDataStore ( archivo ); FeatureSource de SimpleFeatureSource = tienda. getFeatureSource (); // Cree un contexto de mapa y agregue nuestro shapefile MapContext map = new DefaultMapContext (); mapa. setTitle ( " Inicio rápido" ); mapa. addLayer ( featureSource , nulo ); // Ahora muestra el mapa JMapFrame. showMap ( mapa );

Con solo ese código se puede hacer una ventana para abrir archivos y una interfaz

para representar información cartográfica con herramientas sencillas como zoom

mas, menos y selección.

Algo que resulta interesante es crear los mismos archivos shp a partir de archivos

csv, esto también lo explican cómo hacerlo.

Crear archivo. Shp a partir de un csv

Link al tutorial completo: https://docs.geotools.org/stable/tutorials/feature/csv2shp.html

Primero tenemos que crear una aplicación que nos permita abrir un archivo csv con

todos los datos en el siguiente formato:

LAT, LON, CITY, NUMBER

46.066667, 11.116667, Trento, 140

44.9441, -93.0852, San Pablo, 125

13.752222, 100.493889, Bangkok, 150

45.420833, -75.69, Ottawa, 200

44.9801, -93.251867, Minneapolis, 350

46.519833, 6.6335, Lausana, 560

48.428611, -123.365556, Victoria, 721

-33.925278, 18.423889, Ciudad del Cabo, 550

-33.859972, 151.211111, Sídney, 436

Con el siguiente código

public class Csv2Shape {

public static void main(String[] args) throws Exception {

File file = JFileDataStoreChooser.showOpenFile("csv", null );

if (file == null ) {

return ;

featureBuilder.add(number);

SimpleFeature feature =

featureBuilder.buildFeature( null );

collection.add(feature);

} finally {

reader.close();

Y después de leer y acomodar los datos se transforma en un archivo shp de csv

con el siguiente código acorde a la estructura.

* Get an output file name and create the new shapefile

File newFile = getNewShapeFile(file);

ShapefileDataStoreFactory dataStoreFactory = new

ShapefileDataStoreFactory();

Map<String, Serializable> params = new HashMap<String,

Serializable>();

params.put("url", newFile.toURI().toURL());

params.put("create spatial index", Boolean.TRUE);

ShapefileDataStore newDataStore = (ShapefileDataStore)

dataStoreFactory.createNewDataStore(params);

newDataStore.createSchema(TYPE);

* You can comment out this line if you are using the

createFeatureType method (at end of

* class file) rather than DataUtilities.createType

newDataStore.forceSchemaCRS(DefaultGeographicCRS.WGS84);

* Write the features to the shapefile

Transaction transaction = new DefaultTransaction("create");

String typeName = newDataStore.getTypeNames()[ 0 ];

SimpleFeatureSource featureSource =

newDataStore.getFeatureSource(typeName);

if (featureSource instanceof SimpleFeatureStore) {

SimpleFeatureStore featureStore = (SimpleFeatureStore)

featureSource;

featureStore.setTransaction(transaction);

try {

featureStore.addFeatures(collection);

transaction.commit();

} catch (Exception problem) {

problem.printStackTrace();

transaction.rollback();

} finally {

transaction.close();

System.exit( 0 ); // success!

} else {

System.out.println(typeName + " does not support read/write

access");

System.exit( 1 );

Y con este código seleccionamos la ubicación del archivo creado en formato shp a

partir de un csv.

* Prompt the user for the name and path to use for the output

shapefile

* @param csvFile

* the input csv file used to create a default shapefile

name

* @return name and path for the shapefile as a new File object

private static File getNewShapeFile(File csvFile) {

String path = csvFile.getAbsolutePath();

String newPath = path.substring( 0 , path.length() - 4 ) + ".shp";

JFileDataStoreChooser chooser = new JFileDataStoreChooser("shp");

chooser.setDialogTitle("Save shapefile");

chooser.setSelectedFile( new File(newPath));

int returnVal = chooser.showSaveDialog( null );

if (returnVal != JFileDataStoreChooser.APPROVE_OPTION) {

// the user cancelled the dialog

System.exit( 0 );

File newFile = chooser.getSelectedFile();

if (newFile.equals(csvFile)) {

System.out.println("Error: cannot replace " + csvFile);

System.exit( 0 );

return newFile;

1. Las acciones del menú Archivo llaman a este método para conectarse.

2. private void connect(DataStoreFactorySpi format) throws Exception {

3. JDataStoreWizard wizard = new JDataStoreWizard(format);

4. int result = wizard.showModalDialog();

5. if (result == JWizard.FINISH) {

6. Map<String, Object> connectionParameters =

wizard.getConnectionParameters();

7. dataStore =

DataStoreFinder.getDataStore(connectionParameters);

8. if (dataStore == null ) {

9. JOptionPane.showMessageDialog( null , "Could not

connect - check parameters");

11. updateUI();

2. Método auxiliar para actualizar el cuadro combinado utilizado para elegir un tipo

de función:

private void updateUI() throws Exception {

ComboBoxModel cbm = new

DefaultComboBoxModel(dataStore.getTypeNames());

featureTypeCBox.setModel(cbm);

table.setModel( new DefaultTableModel( 5 , 5 ));

Y con esto obtendremos una jTable con la información parecido al siguiente:

Manejo de imágenes.

Link al tutorial completo: https://docs.geotools.org/stable/tutorials/raster/image.html

Se pueden manipular imágenes de manera que se pueda usar una como fondo y

un shp como mapa para interpretar mejor los datos, un ejemplo que se nos

presenta es manejar por capas el visor de shp y raster.

Un ejemplo es poner una imagen arriba de otra, esto se hace mediante el siguiente

procedimiento.

Usaremos JParameterListWizard , para solicitar el archivo ráster y el shapefile que

se mostrará sobre él:

* Solicita al usuario un archivo GeoTIFF y un Shapefile y los pasa al método displayLayers * / private void getLayersAndDisplay () lanza Exception { List < Parameter <? >> list = new ArrayList < Parameter <? >> ( ); lista. añadir ( nuevo parámetro < File > ( "imagen" , del archivo. clase , "Imagen" , "GeoTiff o World + Imagen de pantalla como mapa base" , nuevo KVP ( Parámetro. EXT , "tif" , Parámetro. EXT , "jpg" ))); lista. añadir ( nuevo parámetro < File > ( "forma" , Archivo. clase , "Shapefile" , "Archivo shape contenidos a la pantalla" , nueva KVP ( Parámetro

. EXT , "SHP" ))); JParameterListWizard wizard = new JParameterListWizard ( "Laboratorio de imágenes" , "Complete las siguientes capas" , lista ); int finish = asistente. showModalDialog (); if ( terminar! = JWizard. FINISH ) { System. salir ( 0 ); } Archivo imageFile = ( Archivo ) asistente. getConnectionParameters (). get ( "imagen" ); Presentar SHAPEFILE = ( Archivo ) asistente. getConnectionParameters (). get ( "forma" ); displayLayers ( imageFile , shapeFile ); }

Para mostrar el mapa en pantalla creamos un MapContext , le agregamos la

imagen y el shapefile, y lo pasamos a un JMapFrame.

_* obtener un estilo. Este método determina qué tipo de geometría de características

  • tenemos en el shapefile y luego lo delega en un método de creación de estilo * apropiado. * /_ estilo privado createStyle2 ( FeatureSource featureSource ) { esquema SimpleFeatureType = ( SimpleFeatureType ) featureSource. getSchema (); Clase geomType = esquema. getGeometryDescriptor (). getType (). getBinding (); if ( Polygon. class. isAssignableFrom ( geomType ) || MultiPolygon. class. isAssignableFrom ( geomType )) { return createPolygonStyle (); } else if ( LineString. class. isAssignableFrom ( geomType ) || MultiLineString. class. isAssignableFrom ( geomType )) { return createLineStyle (); } else { return createPointStyle (); } } _/ **
  • Crea un estilo para dibujar_ entidades _poligonales con un contorno azul delgado y * un relleno cian
  • /_ estilo privado createPolygonStyle () { // crea un trazo de contorno parcialmente opaco Stroke stroke = styleFactory. createStroke ( filterFactory. literal ( Color. AZUL ), filterFactory. literal ( 1 ), filterFactory. literal ( 0.5 )); // crea un relleno opaco parcial Fill fill = styleFactory. createFill ( filterFactory. literal ( Color. CYAN ), filterFactory. literal ( 0.5 )); _/ *
  • Estableciendo el argumento geometryPropertyName arg en señales nulas que queremos
  • dibujar la geometría predeterminada de las características
  • /_ PolygonSymbolizer sym = styleFactory. createPolygonSymbolizer ( trazo , relleno , nulo ); Regla regla = styleFactory. createRule (); regla. simbolizadores (). agregar ( sym ); FeatureTypeStyle fts = styleFactory. createFeatureTypeStyle ( nueva regla [] { regla }); Estilo estilo = styleFactory. createStyle (); estilo. featureTypeStyles (). agregar ( pies ); estilo de retorno ; } _/ **
  • Crea un estilo para dibujar_ entidades de línea como líneas azules delgadas * /

estilo privado createLineStyle () { Stroke stroke = styleFactory. createStroke ( filterFactory. literal ( Color. AZUL ), filterFactory. literal ( 1 )); _/ *

  • Estableciendo el argumento geometryPropertyName arg en señales nulas que queremos
  • dibujar la geometría predeterminada de las características
  • /_ LineSymbolizer sym = styleFactory. createLineSymbolizer ( trazo , nulo ); Regla regla = styleFactory. createRule (); regla. simbolizadores (). agregar ( sym ); FeatureTypeStyle fts = styleFactory. createFeatureTypeStyle ( nueva regla [] { regla }); Estilo estilo = styleFactory. createStyle (); estilo. featureTypeStyles (). agregar ( pies ); estilo de retorno ; } _/ **
  • Crea un estilo para dibujar_ entidades _puntuales como círculos con contornos azules * y relleno cian
  • /_ estilo privado createPointStyle () { Graphic gr = styleFactory. createDefaultGraphic (); Marca marca = styleFactory. getCircleMark (); marca. setStroke ( styleFactory. createStroke ( filterFactory. literal ( Color. AZUL ), filterFactory. literal ( 1 ))); marca. setFill ( styleFactory. createFill ( filterFactory. literal ( Color. CYAN ))); gr. graphicalSymbols (). claro (); gr. graphicalSymbols (). agregar ( marca ); gr. setSize ( filterFactory. literal ( 5 )); _/ *
  • Estableciendo el argumento geometryPropertyName arg a señales nulas que queremos
  • dibujar la geometría predeterminada de las características
  • /_ PointSymbolizer sym = styleFactory. createPointSymbolizer ( gr , nulo ); Regla regla = styleFactory. createRule (); regla. simbolizadores (). agregar ( sym ); FeatureTypeStyle fts = styleFactory. createFeatureTypeStyle ( nueva regla [] { regla }); Estilo estilo = styleFactory. createStyle (); estilo. featureTypeStyles (). agregar ( pies ); estilo de retorno ;