Czy jest dostępna biblioteka do analizy składni KML?Odczytywanie i analizowanie pliku KML w języku Java
Odpowiedz
Będziesz tworzyć własną bibliotekę, ale nie będziesz pisać żadnego kodu.
Proponuję przejrzeć http://code.google.com/apis/kml/documentation/kmlreference.html. Stamtąd można uzyskać XML Schema. Po uzyskaniu schematu można użyć JAXB do wygenerowania drzewa obiektów, aby łatwo parsować i pisać KML.
This may also be a good resource, wygląda na to, że ktoś już to zrobił!
Poszedłem tą drogą do małej praktyki, jest małe rozdarcie, ponieważ istnieje kilka elementów, które kolidują, gdy schemat jest uruchamiany przez kompilator. Nic poważnego, ale przygotuj się na napisanie kilku niestandardowych wiązań. – CurtainDog
Ponieważ xml można odczytać dane z dowolnego parsera, ale wciąż nie jest dostępny lib w http://code.google.com/p/libkml/ ma ona powiązania dla Java ale lib jest w C++
Ta biblioteka wygląda obiecująco, a także:
http://code.google.com/p/javaapiforkml/
Biblioteka zapewnia wsparcie do teraz.
Oto moja realizacja JSOUP nadzieję, że pomoże
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 działa bardzo dobrze w przypadku obsługi danych KML.
jeśli używasz 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());
}
można mieć wiele select() wywołuje metodę. ja uproszczony kod do:
Element e = doc.select("LineString").select("coordinates").first();
Błąd: (20, 29) java: nie znaleziono odpowiedniej metody dla parse (org.jsoup.nodes.Document.OutputSettings.Syntax, java.lang.String, org.jsoup.parser.Parser) metoda org.jsoup.Jsoup .parse (java.lang.String, java.lang.String, org.jsoup.parser.Parser) nie ma zastosowania (niedopasowanie argumentu; org.jsoup.nodes.Document.OutputSettings.Syntax nie można przekonwertować na java.lang. String) metoda – user3871754
moje import: import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.parser.Parser; import statycznych plików org.jsoup.nodes.Document.OutputSettings.Syntax.xml; – user3871754
to inne opcje, plik KML to normalny plik, który zawierają struktury pliku XML. Jest inny przykład, do szukania jednego określonego oznaczenia miejsca w pliku wielokrotne oznaczenia miejsc
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;
}
tutaj brakuje średnika: System.out.println ("LATI:" + coo [1]) – user3871754
- 1. Odczytywanie i analizowanie wyjątków Java
- 2. Odczytywanie pliku MIDI w języku Python
- 3. odczytywanie pliku .bmp w języku C++
- 4. odczytywanie i analizowanie pliku TSV, a następnie manipulowanie nim w celu zapisania jako pliku CSV (* wydajnie *)
- 5. Odczytywanie i przetwarzanie danych pliku WAV w języku C/C++
- 6. Wyodrębnij współrzędne z pliku KML w Javie
- 7. Java: Odczytywanie nowej linii z pliku tekstowego
- 8. Odczytywanie pliku przy użyciu skanera Java
- 9. Odczytywanie pliku Java do pamięci i jak nie wysadzić pamięci
- 10. Java Jackson: Analizowanie pliku csv w obiekcie zawierającym listę obiektów
- 11. Analizowanie pliku dziennika log4j
- 12. Które biblioteki Java można wykorzystać do wygenerowania pliku KML?
- 13. Java: Odczytywanie obrazów i wyświetlanie jako ImageIcon
- 14. Generowanie i analizowanie kodu w języku Python z aplikacji C#
- 15. Importowanie pliku KML w Maps API V2
- 16. colorise pojedyncza ścieżka w pliku kml
- 17. Analizowanie zrzutów wątku procesu java
- 18. Odczytywanie pliku Xlsx w PHP
- 19. Odczytywanie zawartości pliku w sharpsvn
- 20. Odczytywanie danych z pliku tekstowego i rozgraniczenia
- 21. Odczytywanie i używanie niestandardowego pliku konfiguracyjnego
- 22. Odczytywanie pliku ASCII z FileChannel i ByteArrays
- 23. Odczytywanie i zapisywanie kodu XML w języku C#
- 24. Node.js odczytywanie i zapisywanie wierszy pliku
- 25. Najlepszy sposób na analizowanie Java w Javie
- 26. Objective-C - Analizowanie pliku CSV w tablicy
- 27. Odczytywanie znaków Unicode z pliku CSV
- 28. Odczytywanie plików zasobów Java w aplikacji GoogleEngine
- 29. Java: Odczytywanie liczb całkowitych z pliku do tablicy
- 30. Odczytywanie obrazów RAW z Java
oto moja realizacja z Jsoup http://stackoverflow.com/questions/1140144/read-and-parse-kml- in-java/21283827 # 21283827 – alexandrius