2010-01-11 14 views
43

Estoy interesado en escribir un programa de visualización para los datos de la carretera en el 2009 Tiger/Line Shapefiles. Me gustaría dibujar los datos de la línea para mostrar todas las carreteras de mi condado.¿Alguien sabe de una biblioteca en Java que pueda analizar los archivos de forma de ESRI?

El archivo de forma ESRI o simplemente un archivo de forma es un formato de datos geoespacial vector popular para información de software de sistemas geográfica. Es desarrollado y regulado por ESRI como una especificación abierta (principalmente) abierta para la interoperabilidad de datos entre ESRI y otros productos de software . 1 Un "shapefile" comúnmente hace referencia a una colección de archivos con ".shp", ".shx", ".dbf" y otras extensiones en un prefijo común name (por ejemplo, "lakes. *"). El archivo de forma se refiere específicamente a los archivos con la extensión ".shp", , pero este archivo solo está incompleto para distribución, ya que los otros archivos de soporte son necesarios.

¿Alguien sabe de bibliotecas existentes para analizar y leer en los datos de línea para Shapefiles?

+0

https://github.com/delight-im/Java-Shapefile-Parser – caw

Respuesta

8

tiene un Java API que proporciona acceso de lectura y escritura a los archivos ESRI.

+1

Tenga en cuenta que, aunque OpenMap de BBN es de código abierto, utiliza una extraña licencia específica de BBN. Es bastante permisivo, pero el hecho de que no sea una licencia estándar puede causar problemas al tratar de combinarlo con otro software (o al intentar que sus beagles legales lo aprueben). –

+0

¿Puede proporcionar un ejemplo de cómo usar dicha API para leer un archivo ESRI? La API de OpenMap es opaca y absolutamente desconcertante para mí. –

57

GeoTools lo hará. Hay un montón de jarras y no necesitas la mayoría de ellas. Sin embargo, leer el shapefile es solo unas pocas líneas.

File file = new File("mayshapefile.shp"); 

try { 
    Map<String, String> connect = new HashMap(); 
    connect.put("url", file.toURI().toString()); 

    DataStore dataStore = DataStoreFinder.getDataStore(connect); 
    String[] typeNames = dataStore.getTypeNames(); 
    String typeName = typeNames[0]; 

    System.out.println("Reading content " + typeName); 

    FeatureSource featureSource = dataStore.getFeatureSource(typeName); 
    FeatureCollection collection = featureSource.getFeatures(); 
    FeatureIterator iterator = collection.features(); 


    try { 
    while (iterator.hasNext()) { 
     Feature feature = iterator.next(); 
     GeometryAttribute sourceGeometry = feature.getDefaultGeometryProperty(); 
    } 
    } finally { 
    iterator.close(); 
    } 

} catch (Throwable e) {} 
+3

si usa Maven para compilar el programa, maneja todas las jarras por usted. –

+1

Geotools tiene un gran tutorial sobre cómo comenzar el desarrollo. Es una aplicación Swing para visualizar un mapa http://docs.geotools.org/latest/userguide/tutorial/quickstart/netbeans.html –

+0

Este ejemplo de respuestas es excelente, me salvó tener que profundizar en los documentos API –

3

Puede intentar usar la biblioteca Java ESRI Shape File Reader. Es pequeño, fácil de instalar y tiene API muy simple. El único inconveniente es que no lee otros archivos obligatorios y opcionales (.shx, .dbf, etc.) que generalmente se envían con un archivo de forma.

+0

¿Sabes? cualquier otra pequeña biblioteca fácil de usar para esta lectura de casos.shx y .dbf? –

0

Puede usar directamente herramientas GUI GIS para que no sea necesario cambiar el código fuente de GeoTools.

Uso QGIS, que realiza todas las operaciones (incluso más) que GeoTools.

Quantum GIS - Un sistema de información geográfica de código abierto para editar, fusionar y simplificar los mapas de shapefile. Ver también: crear mapas con múltiples capas usando Quantum GIS.

Cuestiones relacionadas