QGISを使用して属性を失うことなくKMLをシェープファイルに変換しますか?


29

何百ものポイントを持つKMLファイルがあります。各ポイントには、名前、電力、年齢などの情報があります(水力発電所の地図です)。そのKMLファイルをQGISにインポートすると、この情報は失われます。

この情報を保持する方法はありますか?

情報は次のようになります。

<ExtendedData>
 <SchemaData schemaUrl="#vorlage">
  <SimpleData name="Name">Test</SimpleData>
  <SimpleData name="Power">10895</SimpleData>
  <SimpleData name="Location">L</SimpleData>
 </SchemaData>
</ExtendedData>

私のコードに何か問題はありますか?


1
.kmlをQGISにどのようにインポートしますか?この形式は基本的な形式の1つとしてサポートされているため、kmlファイルをレイヤーとして追加するのは比較的簡単です。詳細を入力すると、何が問題なのかを誰かが把握できる可能性があります。また、ファイルのソースに関する情報が役立つ場合があります。
空間

1
kmlへのライブリンクはありますか?
マッパーズ

FMEを介して可能になると思います。または、少し冒険したい場合は、kml(xml!)を解析してシェープファイルにエクスポートするPythonスクリプトを作成できます。(使用するライブラリ:pythonシェープファイルライブラリ、pythonのXML)
-U2ros

2
RKはい、私はそれを見ました。満足のいく解決策がないので、問題のより良い説明で新しい質問をすることにしましたが。また、問題を試してみてください別のサークル後にオンラインKMLバリデータで試験した場合にKMLファイルがKML有効でない湿地や多くのエラー...が付属していることをすることができ
ミロ

1
U2ros私は成功せずにオンラインFMEを試しました。デスクトップFMEかもしれませんが、次の「インストールラウンド」で試してみることができます... kmlをshpに変換するスクリプトをプログラムするのに十分な冒険心はありません。しかし、最悪の場合、KMLを通過し、すべての機能の「ExtendedData」を見つけ、「名前」を介してQGIS / ArcGIS / Mapinfoの変換されたKMLに参加できるテーブル/ csvを作成するスクリプトを書くことを想像できます...
Miro

回答:


15

ExtendedDataに正しい「名前」値がありません。

例えば

<Data><displayName>System</displayName><value>Riverine</value></Data>

GDALおよびQgis Masterではインポートされませんが、

<Data name="System"><displayName>System</displayName><value>Riverine</value></Data>

インポートされます。

これは、優れたテキストエディターで変更できます。

------------------- Miroによって追加されました---------------------

KML編集の場合、PSPad(またはNotepad ++およびその他の多くのフリーテキストエディター)のようなReplace関数で「正規表現」を許可するテキストエディターを使用する必要があります。

見つける: <Data><displayName>(.*)</displayName>

交換: <Data name="$1"><displayName>$1</displayName>

この後、QGIS(キーは「新しい」バージョン-GDALバージョン1.9.2以降を含む)と「ベクターレイヤーの追加」を使用するだけで、レイヤーにはすべての「ExtendedData」が読み込まれます。


ありがとう、それはキー情報でした。1つのテストファイルで置き換えようとしましたが、完璧に機能しました。すべての「ExtendedData」が列として表に追加されました。再びありがとうございました。
ミロ

3
実際、DisplayNameはQgisでは使用されません。そのため、<Data> <DisplayName>を<Data name = "で置き換え、</ DisplayName>を">で置き換えることにより、RegExpなしで置き換えることができます。
AndreJ

1
KMLファイルにはタグ<SchemaData>も含まれており、QGISで開くためにコメントする必要がありました。しかし、そうでなければトリックは完璧に機能しました!
ジャナ14年

8

globalmapperを使用して、wetlandfilesの1つをshapeに変換しました。変換されたdbfファイル(エリアとライン)から2つのスクリーンショットを囲みました。 ここに画像の説明を入力してください

ここに画像の説明を入力してください

うまくいけば、これはあなたが望むものです..


はい、それはまさに私が必要なものです。KML標準に準拠していないこれらのKMLを処理できるソフトウェアがあります。無料のQGISでそれを行う方法については既に他の答えがあるので、Global Mapperを試してみるつもりはありませんが、それは間違いなく他の誰かを助けることができます。ありがとうございました。
ミロ

本当に素晴らしいコンバータ、クール!!
イスラム教

6

Global Mapperソフトウェアを使用して、kml / kmzファイルを簡単にエクスポート/インポートし、データと多数のベクターおよびラスター形式を添付できます。これは最高のソフトウェアの1つです。

http://www.bluemarblegeo.com/global-mapper/product/formats.php


ヒントをありがとう。kml / kmzファイルをインポート/エクスポートできると思いますが、それができる5つ以上のアプリを既に試しました。そして、それらのどれも属性( "ExtendedData")を読み取ることができません。それでは、実際にGlobal Mapperはそれを行うことができますか?
ミロ

5

GoogleのlibkmlはUbuntuのGDAL 1.9.2、特にgdal-bin 1.9.2-2〜precise4には同梱されていないようです:

$ ogrinfo --formats | grep -i kml
  -> "KML" (read/write)

libkmlとでの作業バージョンを取得するためにExtendedDataサポートを、私はからGDALを構築しなければならなかったのsvnトランクからlibkmlを構築した後(r25473)のsvnトランク GDALのウェブサイト上の文書として1.2.0リリースは、明らかに十分ではないことを、具体的に注目、(r864) 。libkml0Ubuntuの正確な(現在は1.2.0-1ubuntu6)にインストールしても効果がないことに注意してください。あなたは本当に私がPPAを見つけることができなかった1.3またはsvnトランクが必要です。

最終的に、Ubuntu上でlibkmlを正確に構築することさえできませんでした。付属しているBoostのバージョンにはタイプエラーがあり、依存関係が正常でないためにlibtoolの実行エラーがあります。なんらかの理由で、これらはDebian squeezeでは問題ではなく、私は成功しました。

$ ogrinfo --formats | grep -i kml
  -> "LIBKML" (read/write)
  -> "KML" (read/write)

一度実行すると、ogr2ogr -f "ESRI Shapefile" foo.shp foo.kmlqgisがExtendedData属性を保存したままインポートできるシェープファイルが実行されました。


5

Qgis 1.8.0 Lisboaで使用されるOgr2ogr kmlドライバーはkml ExtendedDataタグをサポートしていません。

LIBKMLドライバーは、GDALバージョン1.9.2以降、OSGEO4Wパッケージ、MS4W、およびQgis Masterに組み込まれています。

データは間違っていませんが、OSGeo4WのLIBKMLドライバーにはSchemaDataに問題がありました。または、次のように機能します。

<ExtendedData>
 <Data name="Name"><value>Test</value></Data> 
 <Data name="Power"><value>10895</value></Data>
 <Data name="Location"><value>L</value></Data> 
</ExtendedData>

編集:SchemaDataのバグは、OSGEO4WのGDAL 1.9.2-2パッケージで修正されました。


4

FME 2012(SP4)を使用する

リーダーKMLを読み込む

ライターを選択(Shapefile)

アイテムを接続し、書き込み選択時に(フィーチャタイプから属性をコピー

ワークスペースを実行する

ここに画像の説明を入力してください


ありがとう、fme_install.msiをダウンロードしましたが、インストールにエラーがあります。この質問には既に別の解決策があるため、この方法では続行しません。とにかくありがとうございます。
ミロ


1

QGISでそれを達成できるかどうかはわかりません。ただし、MapWindowにはKML2Shapefileプラグインがあります。

KML2ShapefileはMapWindow GISのプラグインであり、Google Earth KMLおよびKMZファイルをGISで使用するためのシェープファイルに変換します。

KML2Shapefileは、各KMLジオメトリタイプを個別のシェープファイルに分割します。複雑なジオメトリをサポートし、KMLの多くを属性データとして提示できます。

MapWindowは、フリーでオープンソースのGISパッケージでもあります。無料でダウンロードしてインストールできます。MapWindowのKML2Shapefileプラグインを使用してKMLをシェープファイルに変換し、結果のシェープファイルをQGISにロードするだけです。とにかくWindowsを使用していると仮定します。

今のところ考えられる最良の解決策。QGISでそれを行うプラグインを誰かが知っていることを願っています。


1
ご協力いただきありがとうございます。試しましたが、それでもデータは失われます。情報は次のようになります。<ExtendedData> <SchemaData schemaUrl = "#vorlage"> <SimpleData name = "Name"> Test </ SimpleData> <SimpleData name = "Power"> 10895 </ SimpleData> <SimpleData name = "Location"> L </ SimpleData> </ SchemaData> </ ExtendedData>コードに問題はありますか?
フェリックス

あ、ごめんなさい。私はそれがうまくいくことを望んでいた。
RK

1
@Felix-コメントで提供した情報は非常に役立ちます。追加のコンテキストと明確にするために、質問を編集してそこに追加することをお勧めします。
空間の取得

@AndreJoost-良い答えを思いついたようですね。同じ問題を持つ他の人の検索結果に表示されるように、実際の回答として追加する価値があります。
ゲット空間

1

グローバルマッパーを入手し、KMZまたはKMLを取り込んでVector IMG(ESRI SHPファイル)をエクスポートするだけです。グローバルマッパーはほとんどのファイルタイプを読み取ることができます。次に、ARC、グローバルマッパー、マニフォールド、QGISでシェイプを開き、属性テーブルを有効にして表示します。すべての情報がそこにあります。この時点でMicrosoft Excelを使用してSHPからDBFファイルを開き、必要に応じてXLXSファイル拡張子として保存することもできます。


1

QGIS 3.2.0では、ツールボックスを使用して簡単に変換できます。

[ツールボックス]-> [GDAL]-> [ベクトル変換]-> [フォーマットの変換...]を選択します。(Cerace de Herramientas de Procesos-> GDAL->ConversiónVectorial-> Convertir Formato)

KMLファイルを選択し、SHPファイルとして保存します。また、スペイン語の文字を適切に表示するには、[プロパティ]-> [ソース](タブ)-> [ソースコーディング]の結果ファイルを[UTF-8]から[Windows-1258]に変更する必要がありました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.