KMLを解析できるライブラリはありますか?JavaでKMLを読み込んで解析する
答えて
あなた自身のライブラリを作成しますが、コードを書くことはありません。
私はhttp://code.google.com/apis/kml/documentation/kmlreference.htmlをお勧めします。そこからXML Schemaを得ることができます。スキーマを取得したら、JAXBを使用してオブジェクトツリーを生成し、KMLを簡単に解析して書き込むことができます。
This may also be a good resourceのように、他の誰かが既に行っているようです。
私はちょっとした練習のためにこの道を歩みましたが、スキーマがコンパイラで実行されるときにいくつかの要素が衝突するという点で少し問題があります。大事なことはありませんが、いくつかのカスタムバインディングを書く準備はできています。 – CurtainDog
それがXMLであるので、あなたは、任意のパーサを使用してデータを読み取ることができますが、それでもこのライブラリは、同様に有望に見える、それはJava用のバインディングを持っていますが、libにはC++で
あるhttp://code.google.com/p/libkml/でご利用いただけますlibにあります:
は、http://code.google.com/p/javaapiforkml/
ライブラリはこれまでサポートされています。
は、ここに私のJSOUPの実装は、それがKMLデータを扱う場合には本当によく
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作品を役に立てば幸いです。あなたはアンドロイドスタジオ:)
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());
}
を使用する場合
あなたは、複数のselect()メソッドの呼び出しを持つことができます。 は私がにコードを簡素化:
Element e = doc.select("LineString").select("coordinates").first();
エラー:(20,29)java:parse(org.jsoup.nodes.Document.OutputSettings.Syntax、java.lang.String、org.jsoup.parser.Parser)の適切なメソッドが見つかりません メソッドorg.jsoup.Jsoup .parse(java.lang.String、java.lang.String、org.jsoup.parser.Parser)は適用されません (引数の不一致; org.jsoup.nodes.Document.OutputSettings.Syntaxはjava.langに変換できません。 String) メソッド – user3871754
私のインポート: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
これは構造にxmlファイルが含まれている他のオプション、KMLファイルは通常のファイルである、です。 これは、ファイル内の検索一つの特定の目印のために、
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;
}
ここにセミコロンがありません:System.out.println( "LATI:" + coo [1]) – user3871754
- 1. Java - BZ2ファイルを読み込んで解凍/解析する
- 2. KMLをJavaで解析する
- 3. ログファイルを読み込んでJavaのエントリを解析する方法は?
- 4. イメージ/スクリプトを読み込まずに、バックグラウンドでページを読み込んで解析する方法は?
- 5. Haskellの読み込みでユーザー入力を解析する
- 6. Java例外の読み込みと解析
- 7. RDF読み込み/解析エラー
- 8. jqueryの解析とjqueryの読み込みの違いは何ですか?読み込みと解析は同じではありませんか?
- 9. Javaを使用してC-Headerファイルを解析/読み込む
- 10. 非常に大きなファイルの内容を読み込んで解析する
- 11. Jellyテンプレートでの外部XMLファイルの読み込みと解析
- 12. Luaでの.MIDファイルの読み込みと解析?
- 13. OkNegotiatedContentResultからコンテンツを読み込み/解析する方法は?
- 14. JSON with Javaの読み取り/解析
- 15. javaで公開鍵を解析して読み取る
- 16. GoogleマップでのKML目印の動的読み込み
- 17. .txtファイルを読み込んで分析する
- 18. C#プロジェクトのkmlファイルを読み込んで情報を返します。
- 19. Core Dataでテキストファイルを解析して読み込む方法は?
- 20. xml配列を解析して読み込みます
- 21. 各Google Earthプラグインの移動時にネットワークリンクから読み込まれたKMLを解析します
- 22. PHPでcsvファイルを読み込んで読み込み
- 23. Javaで任意のxml構造体を読み込み、構文解析するには?
- 24. iOS5からiOS 5 ics(iCalendar)の読み込み/解析をWebURL
- 25. UIViewを動的に読み込んで解放する
- 26. Cで.datファイルを読み込んで解析するにはどうすればよいですか?
- 27. テキストファイルを読み込んでテキストを比較する - Java
- 28. XMLでファイルを読み込みJava
- 29. haskell - .pdfファイルの内容の解析/読み込み
- 30. "multipart/mixed; boundary = batch"レスポンスの処理/解析/読み込み方法
ここJsoupと私の実装の複数の目印他の例である http://stackoverflow.com/questions/1140144/read-and-parse-kml- in-java/21283827#21283827 – alexandrius