Esiste una libreria disponibile per analizzare KML?Lettura e analisi KML in java
risposta
Creerai la tua libreria, ma non scriverai alcun codice.
Suggerisco di guardare http://code.google.com/apis/kml/documentation/kmlreference.html. Da lì è possibile ottenere il XML Schema. Una volta ottenuto lo schema, è possibile utilizzare JAXB per generare un albero di oggetti per analizzare e scrivere facilmente KML.
This may also be a good resource, sembra che qualcun altro l'abbia già fatto!
Sono andato su questa strada per un po 'di pratica, c'è un piccolo inconveniente nel fatto che ci sono un paio di elementi che si scontrano quando lo schema viene eseguito attraverso il compilatore. Niente di importante, ma sii pronto a scrivere alcuni binding personalizzati. – CurtainDog
Dal momento che è XML è possibile leggere i dati con qualsiasi parser, ma ancora non v'è un lib disponibile presso http://code.google.com/p/libkml/ ha binding per Java, ma il lib è in C++
Questa libreria sembra essere molto promettente così:
http://code.google.com/p/javaapiforkml/
La libreria fornisce supporto fino ad ora.
Ecco la mia implementazione JSOUP spero che aiuta
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 funziona davvero bene in caso di trattamento di dati kml.
se si utilizza 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());
}
È possibile avere più chiamate di metodo select(). Ho semplificato il codice per:
Element e = doc.select("LineString").select("coordinates").first();
Errore: (20, 29) java: nessun metodo adatto trovato per parse (org.jsoup.nodes.Document.OutputSettings.Syntax, java.lang.String, org.jsoup.parser.Parser) metodo org.jsoup.Jsoup .parse (java.lang.String, java.lang.String, org.jsoup.parser.Parser) non è applicabile (argomento non corrispondente; org.jsoup.nodes.Document.OutputSettings.Syntax non può essere convertito in java.lang. String) metodo – user3871754
le mie importazioni: import 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
Si tratta di altre opzioni, il file KML è un normale file, che contengono la struttura del file xml. Questo è altro esempio, per la ricerca un segnaposto specifico nel file molteplici segnaposto
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;
}
manca il punto e virgola: System.out.println ("LATI:" + coo [1]) – user3871754
- 1. Lettura e analisi delle eccezioni Java
- 2. Analisi/lettura di file C-Header utilizzando Java
- 3. Analisi bytecode in Java
- 4. Java: file CSV in lettura e scrittura
- 5. cronexpression analisi in data java
- 6. Estrai le coordinate dal file KML in Java
- 7. Lettura caratteri in Java
- 8. Certificato Java X509 analisi e convalida
- 9. Analisi XML Java e offset byte originali
- 10. Java codice statico analisi
- 11. Analisi log GC Java
- 12. Lettura e scrittura su DVD/CD - Java
- 13. Java FileLock per lettura e scrittura
- 14. Ruby: libreria KML?
- 15. Tabella Fusion Importazione KML
- 16. Analisi XML in Java tramite Groovy
- 17. Quali librerie Java possono essere utilizzate per generare KML?
- 18. JsonPath Errore di analisi JSON in java
- 19. Analisi della data RFC 2822 in JAVA
- 20. Android: come caricare KML
- 21. Libreria di analisi nome Java?
- 22. Blocco lettura Java BufferedReader?
- 23. Analisi della stringa JSON in Java
- 24. Lettura da System.in - Java
- 25. di analisi JSON file Java
- 26. Lettura e scrittura su file di testo in java
- 27. Java: lettura del file e suddivisione in più file
- 28. Java decimale problema Format analisi
- 29. Errore di analisi Java LocalDateTime
- 30. Lettura e analisi di un file .json da 400 MB in Julia senza crash del kernel
ecco la mia applicazione con Jsoup http://stackoverflow.com/questions/1140144/read-and-parse-kml- in-java/21283827 # 21283827 – alexandrius