属性を失うことなく.shpから.kmlから.shpへ


10

属性を持つシェープファイルをクライアント用の.kmlに変換しました。次に、.kmlと属性がGoogle Earth内で編集されました。更新された.kmlを受け取ったので、.shpに戻す必要があります。問題は、すべての属性がHTML形式になっているため、Google Earthにポップアップ情報ボックスが表示されることです。.shpに変換しようとすると、属性が(Googleで作成された)「説明」フィールドにまとめられます。そして、私の属性と情報はすべて1つのセルにまとめられます。「説明」フィールドからデータを抽出する方法はありますか?私がそれをしたとしても、htmlフォーマットを取り除き、それを使用可能にする簡単な方法はありますか?

これは、私がいくつかのフォーラムで見つけた「Fusion Table」方法を使用して得られるものです。左側にhtmlが表示されています。表示されているよりもさらに進んでいます。

http://s6.postimg.org/uf7jeuksh/problems.png

ArcGIS Desktop 10.2を使用しています。


フォーマット間の変換には何を使用しますか?代わりにogr2ogrまたはQGISを試すことができますか?
bugmenot123 2015

回答:


3

Data Interoperabilityエクステンションを使用して作成されたSpatial ETLツールが、KML / KMZファイルの属性をスキーマがそのままのシェープファイルに戻すことを確認しました。ツール作成ウィザードで[ 動的スキーマ ]オプションを選択するだけです。

空間ETLステップ


回避策は、説明フィールドを解析して、必要なさまざまな属性フィールドの値を取得し、適切なフィールドにコピーすることです。そして次回は、クライアントがExcelスプレッドシートなどに属性を追加して、更新のためにシェープファイルに結合するだけでよいようにします。


1
これが現時点での私の唯一の解決策だと思います。ただし、次回は間違いなくExcelスプレッドシートを含めます。
ケイティB.

ArcGISのData Interoperabilityエクステンションにアクセスできますか?この問題については経験はありませんが、そこにあなたの属性を再マッピングできるライターがいるかもしれません
Adam

Safe DataのFME(Data Interoperabilityのベース)も必要なことを行いますが、コストもかかります。
アダム

3

最初にQGISでKMLを開き、シェープファイルとして保存すると、属性が維持されました。QGISでベクターデータを追加し、[参照]でファイルの種類を[Keyhole Markup Language(KML)]に設定します。インポートするKMLを参照し、[開く]をクリックします。KMLからインポートしたオブジェクトをシェープファイルに保存します。ArcMapにシェープファイルをインポートすると、維持されているすべての属性が表示されます。


2

このツールである、Kevin Martinによって開発されたKMLへのエクスポートが機能します。

スタイルにはいくつかの問題がありますが、少なくとも色と属性は正しく、属性、ラベルなどを操作するためのオプションがたくさんあります...


2

日付文字列を含むフィールドの1つだけが必要でした。arcMapを使用して、フィールド計算機を使用して抽出することで、これを解決することができました。いくつかのフィールドを抽出するだけでよい場合は、少し面倒ではありますが、これでうまくいくかもしれません。

次の手順は、フィールド計算機で使用するVBの行を構築し、HTMLタグとテーブルに格納されているデータの範囲に基づいて、説明フィールドから部分文字列を切り取るのに役立ちます。

  1. GoogleEarthでKML / KMZを開き、機能をクリックしてポップアップを開きます。取得するフィールドの正確な名前を特定します。鉱山は「DATE」と呼ばれています
  2. ArcMapで、KML / KMZをインポートしたときに作成したレイヤーの属性テーブルを開きます。
  3. 説明フィールドを特定します。私のデータでは「PopupInfo」と呼ばれています
  4. 最初のレコードで、「PopupInfo」セルを右クリックし、「コピー」をクリックします
  5. メモ帳を開き、セルの内容を貼り付けます。ポップアップのHTMLが表示されます。
  6. ctrl-Fを使用して、KML / KMZからフィールド名を検索します(私の場合は「DATE」)。これは、私が気にかけているHTMLの行だけを示すスクリーンショットです。 ここに画像の説明を入力してください
  7. フィールド名の先頭からデータの先頭までのスペースを含む文字数を数えます。私の場合は15文字です。
  8. 抽出する文字数を決定します。私の部分文字列には19が必要です。たとえば、AZやWYのような状態コードだけが必要な場合は、2だけが必要な場合があります。データのこのフィールドに一貫した長さのエントリがない場合は、最も長い側でエラーが発生します。編集:後で手動で、またはinstr()およびrtrim()VB関数を使用して、余分な文字を削除できます。それについて助けが必要な場合は、投稿するかメッセージを送ってください。
  9. arcMapで、新しいTEXTフィールドをレイヤーに追加し、少なくともデータに必要な数の文字を入力してください。デフォルトは50です。

  10. 次に、新しいフィールドのフィールド計算機を開きます。データの先頭はInStr()関数を使用して検出され、データはMid()関数を使用して抽出されます。次のVBコマンドを入力します。

    Mid([PopupInfo],InStr([PopupInfo],"DATE")+15,19)

もちろん、私のフィールド名を(ステップ3と6から)置き換えて、15と19の長さを(ステップ7と8にある)サブストリングの長さに変更します。

上記のVB行で:

  • [PopupInfo]は、KMLポップアップのHTMLを含む迷惑なフィールドの名前です。
  • 「日付」は、抽出するデータを含むKMLフィールド名とHTMLタグです。
  • 15は、日付タグの開始から実際の日付データの開始までの文字数です。
  • 19は、保持する日付文字列の文字数です。

1

これは、ArcMap、Google Drive Fusion Tables、MS Excelを使用して、属性を保持しながらKMLファイルを.shpファイルに変換するいくつかの手順を説明したガイドです。

ガイドのあるサイトへのリンク


はい、しかしそれは私の問題を解決しません。私の属性はまだhtml形式の[説明]フィールドにまとめられます。KML to Layerツールは私の状況では機能しません。他のアークスクリプトも試しました。
ケイティB.

私の編集した答えを見てください。
Cameron Sloan

さらに、元の質問でリンクした画像は、フュージョンテーブル法を使用した場合の結果です。私の状況ではうまくいきません。
ケイティB.

あなたはそれをExcelに持ち込みましたか?
Cameron Sloan

はい、同じ問題です。他の誰かが同じ問題を抱えている別のフォーラムサイトを見つけました。1000行のスクリプトを実行してコードを削除するか、「検索と置換」を実行する必要があるようです。ご協力いただきありがとうございます。
ケイティB.

1

カーソルとリストを使用してこの作業を行い、PopupInfo xmlフィールドを有用な値に分割できました

  1. arcpy KML to layerツールとProjectツールを使用して、目的の座標系にアクセスします(関連付けられているレイヤーファイルが原因である可能性がある、元の変換出力にフィールドを追加するときに問題が発生しました)。

  2. .da.SearchCursorを使用して、最初の行からPopupInfo文字列を取得します。次に、「<」に基づいてリストに分割し、最初の2つの値(Google Earthのラベルフィールド)を削除して、「td>」タグが付いているが「td>」タグが付いていない残りの値を新しいリストに入れます。フィールド名(偶数インデックス)とフィールド値(奇数インデックス)

  3. arcpy.AddField_managementを使用してフィールド名リストをループし、すべてのフィールドを追加します(既に存在する場合はスキップします)

  4. .da.UpdateCursorを使用してすべての行のPopupInfoを取得し、検索カーソルと同じように分割して新しいリストを作成します。

  5. 今回は、すべての奇数のインデックス値を使用して行を更新し(i%2 <> 0:row [(i-1)/ 2] = list [i]の場合)、次にcursor.updateRow(row)



0

更新:同じ問題でこのスレッドに遭遇した場合、そこにあなたのためのツールがあります!https://mygeodata.cloud/をチェックしてください。

私は本当にうまくいきます。KMLをアップロードすることができ、エクスポートされたシェープファイルは、自分のフィールドにすべての属性を正しく持っています。唯一の欠点は、「無料」の変換の数が限られていることです。


-3

この変換の問題に対する簡単な解決策はまだありません。ここ数年、ここで何度も尋ねられました:

kml-in-qgis-with-additional-data

preserving-attributes-during-kml2shp-conversion-in-arcgis-for-desktop

属性データを失わずにkmlをシェープファイルに変換する

KmltoLayer変換ツールに関するesriの説明:

「EsriのKMLツールの「所有者」として私は言うことができます。KML内のExtendedData要素は、どのバージョン(9.3-10.3)のArcGISでKML to Layerツールを使用してもフィールド属性に変換されません。これには、ArcMap on Windows、またはLinux上のArcGIS Server。これをサポートするための拡張リクエストがあり、今後のリリースで検討しています。」


2
こんにちは-私はあなたの答えに個人的な違反をします。私のコメントをコピーして貼り付け、引用符で囲む場合は、拡張機能の購入に関する独自のコメントを追加しないでください。
KHibma 2015

@sirgeo Data Interoperabilityエクステンションで、この問題に対する確実な解決策があります。これはあなたが好きなソリューションではないようです。
アダム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.