¿Hay alguna biblioteca disponible para analizar KML?Lee y analiza KML en java
Respuesta
Hará su propia biblioteca, pero no va a escribir ningún código.
Sugiero mirar http://code.google.com/apis/kml/documentation/kmlreference.html. Desde allí puede obtener el XML Schema. Una vez que tenga el esquema, puede usar JAXB para generar un árbol de objetos para analizar y escribir fácilmente KML.
This may also be a good resource, parece que alguien más ya lo ha hecho.
Fui por este camino para practicar un poco, hay un pequeño inconveniente en que hay un par de elementos que chocan cuando el esquema se ejecuta a través del compilador. Nada importante, pero prepárate para escribir algunos enlaces personalizados. – CurtainDog
Dado que es XML se puede leer los datos con cualquier analizador pero todavía hay un lib disponible en http://code.google.com/p/libkml/ tiene enlaces para Java, pero el lib está en C++
Esta biblioteca se ve prometedor, así:
http://code.google.com/p/javaapiforkml/
La biblioteca proporciona soporte hasta ahora.
Aquí está mi aplicación JSOUP creo que sirve
public ArrayList<ArrayList<LatLng>> getCoordinateArrays() {
ArrayList<ArrayList<LatLng>> allTracks = new ArrayList<ArrayList<LatLng>>();
try {
StringBuilder buf = new StringBuilder();
InputStream json = MyApplication.getInstance().getAssets().open("track.kml");
BufferedReader in = new BufferedReader(new InputStreamReader(json));
String str;
String buffer;
while ((str = in.readLine()) != null) {
buf.append(str);
}
in.close();
String html = buf.toString();
Document doc = Jsoup.parse(html, "", Parser.xmlParser());
ArrayList<String> tracksString = new ArrayList<String>();
for (Element e : doc.select("coordinates")) {
tracksString.add(e.toString().replace("<coordinates>", "").replace("</coordinates>", ""));
}
for (int i = 0; i < tracksString.size(); i++) {
ArrayList<LatLng> oneTrack = new ArrayList<LatLng>();
ArrayList<String> oneTrackString = new ArrayList<String>(Arrays.asList(tracksString.get(i).split("\\s+")));
for (int k = 1; k < oneTrackString.size(); k++) {
LatLng latLng = new LatLng(Double.parseDouble(oneTrackString.get(k).split(",")[0]),
Double.parseDouble(oneTrackString.get(k).split(",")[1]));
oneTrack.add(latLng);
}
allTracks.add(oneTrack);
}}
} catch (Exception e) {
e.printStackTrace();
}
return allTracks;
}
osmbonuspack funciona muy bien en el caso de manejo de datos KML.
si utiliza Android Studio :)
dependencies {
compile 'org.jsoup:jsoup:1.8.1'
}
// find a way to read the file and store it in a string
String inputFileContents = "";
String xmlContent = inputFileContents;
Document doc = Jsoup.parse(xml, "", Parser.xmlParser());
for(Element e : doc.select("LineString").select("coordinates")) {
// the contents
System.out.println(e.text());
}
Puede tener varias llamadas a métodos de selección(). que simplifica el código para:
Element e = doc.select("LineString").select("coordinates").first();
Error: (20, 29) java: no se ha encontrado un método adecuado para parse (org.jsoup.nodes.Document.OutputSettings.Syntax, java.lang.String, org.jsoup.parser.Parser) method org.jsoup.Jsoup .parse (java.lang.String, java.lang.String, org.jsoup.parser.Parser) no es aplicable (argumento no coincide; org.jsoup.nodes.Document.OutputSettings.Syntax no se puede convertir a java.lang. Cadena) método – user3871754
mis importaciones: importación org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.parser.Parser; import static org.jsoup.nodes.Document.OutputSettings.Syntax.xml; – user3871754
Ésta es otra opción, el archivo KML es un archivo normal, que contienen la estructura del archivo XML. Este es otro ejemplo, para la búsqueda de una marca de posición específica en el archivo de las múltiples marcas de posición
private static void readKML(InputStream fileKML, String nameCoordinates) {
String column = null;
Boolean folder = Boolean.TRUE;
Boolean placemark = Boolean.FALSE;
Boolean placeCorrect = Boolean.FALSE;
BufferedReader br = new BufferedReader(new InputStreamReader(fileKML));
try {
while ((column = br.readLine()) != null) {
if (folder) {
int ifolder = column.indexOf("<Folder>");
if (ifolder != -1) {
folder = Boolean.FALSE;
placemark = Boolean.TRUE;
continue;
}
}
if (placemark) {
String tmpLine = nameCoordinates;
tmpLine = tmpLine.replaceAll("\t", "");
tmpLine = tmpLine.replaceAll(" ", "");
String tmpColumn = column;
tmpColumn = tmpColumn.replaceAll("\t", "");
tmpColumn = tmpColumn.replaceAll(" ", "");
int name = tmpColumn.indexOf(tmpLine);
if (name != -1) {
placemark = Boolean.FALSE;
placeCorrect = Boolean.TRUE;
continue;
}
}
if (placeCorrect) {
int coordin = column.indexOf("<coordinates>");
if (coordin != -1) {
String tmpCoordin = column;
tmpCoordin = tmpCoordin.replaceAll(" ", "");
tmpCoordin = tmpCoordin.replaceAll("\t", "");
tmpCoordin = tmpCoordin.replaceAll("<coordinates>", "");
tmpCoordin = tmpCoordin
.replaceAll("</coordinates>", "");
String[] coo = tmpCoordin.split(",");
System.out.println("LONG: "+coo[0]);
System.out.println("LATI: "+coo[1])
break;
}
}
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
return cresp;
}
aquí falta el punto y coma: System.out.println ("LATI:" + coo [1]) – user3871754
- 1. Escapar una cadena de conseguir regex analiza en Java
- 2. CipherInputStream solo lee 16 bytes (AES/Java)
- 3. Ruby: KML Library?
- 4. ¿Qué bibliotecas de Java se pueden usar para generar KML?
- 5. Ubicación falsa Y velocidad en el emulador. KML o GPX?
- 6. ¿Hay una función Java que analiza los caracteres escapados?
- 7. ¿Cómo se lee continuamente un archivo en Java?
- 8. Archivo sin bloqueo lee
- 9. ¿Cómo se lee 'List separator' del sistema operativo en Java?
- 10. Especificación de precisión en GPX o KML
- 11. Lectura en archivos XML/KML con C#
- 12. Creación programática de flechas vectoriales en KML
- 13. generar un archivo KML en SQL 2008
- 14. F # html que analiza
- 15. Crear kml desde csv en Python
- 16. Linq a XML para KML?
- 17. ¿Cómo se crea (y se lee) acceso directo a Windows (archivo .lnk) en Java?
- 18. ¿Se lee y escribe en propiedades atómicas en C#?
- 19. ¿Cómo se lee una clave cifrada con contraseña con java?
- 20. ¿Cómo se lee JavaDoc?
- 21. jQuery no analiza JSON correctamente
- 22. Lee STDIN (SYSIN) en COBOL
- 23. Lee n líneas en [String]
- 24. ¿Cómo se analiza una estructura de datos en serie de PHP en Java?
- 25. ¿Cómo se analiza estático el código C++ y Objective-C++?
- 26. Lee y escribe en un archivo usando VBScript
- 27. ctags no analiza correctamente stdio.h
- 28. Scala: coincide y analiza una cadena de enteros?
- 29. Cómo crear un archivo KML utilizando R
- 30. XText analiza programáticamente un script DSL en un modelo Ecore
Aquí está mi aplicación con Jsoup http://stackoverflow.com/questions/1140144/read-and-parse-kml- in-java/21283827 # 21283827 – alexandrius