KMLがGoogle Maps APIに対して大きすぎる/複雑な場合はどうなりますか?[閉まっている]


29

Webアプリには、シンプルなマッピング機能が組み込まれています(現在は、埋め込みGoogleマップ上のマーカーとKMLオーバーレイのみ)。これはかなりうまくいきます。私たちが直面している唯一の本当の制限は、KMLに対する Googleのサイズと複雑さの制限を超えるKMLオーバーレイです。

独自のサーバー(GeoServerやArcGIS Serverなど)を立ち上げることを検討しています。ただし、Googleの制限が10 MBの場合に15 MBのKMLを提供するだけの大きなステップのように思えます。

健全性チェックが必要です:GoogleのKMLオーバーレイ用の無料で簡単なAPIと、独自のタイルサーバーのセットアップの間に中間点がありますか?


5
1つのKMLを2つの小さなKMLファイルに分割します-不要なデータのオンとオフを切り替えるオプションです。
マッパーズ

1
任意に使用融合テーブル(データで100K行限界又は100メガバイト) - gmaps-samples.googlecode.com/svn/trunk/fusiontables/...参照groups.google.com/group/fusion-tables-users-group/browse_thread/...
マッパーズ

@mapperz一度にアップロードできるデータは100MBのみですが、その後、同じテーブルに最大250MBのストレージまでさらに行をインポートできます。
geographika

あなたはすでにそれを知っていましたが..gis.stackexchange.com/questions/6615/…
geographika

Fusion Tablesサービスは2019年12月3日にシャットダウンされるため、ソフトウェアでQMLデスクトップを使用してkmlファイルを小さくすることができます。qgis pythonライブラリもあります。0.0005を使用して、ジオメトリを単純化するオプションでQGISデスクトップを使用しました。次に、作成したレイヤーをkmlとしてエクスポートします。これは、同じメニューからバッチジョブとしても実行できます。次に、作成したすべてのレイヤーを別のプロジェクトで開き、QGISデスクトップ内のコンソールを使用して、すべての.shpファイルを.kmlに変換します
makkasi

回答:


12

既にGoogleマップの開発に投資しているので、すべてのデータをGoogle Fusion Tablesにプッシュすることを強くお勧めします。その後、KMLと同様の方法で、信じられないほどのパフォーマンスでマップに解析できます(WNYC Fusion Tablesアプリを参照)。フロントエンドを大幅に変更する必要のないKMLへのアップグレードと考えてください。


データの更新スケジュールが24時間を超えていない場合、これは素晴らしいアイデアだと思います。これは、Googleが(kmlがブラウザの速度を遅くしている場合はフュージョンテーブルを使用している)ために私たちに言ったことです。
スティーブ

1
Fusion Tablesを指摘してくれてありがとう-どういうわけか、これは完全に私の注意を逃れた、非常にクール。残念ながら、これは頻繁に変更されるデータを扱うには少し面倒です。また、全体的なストレージの制限(ユーザーあたり250MB)では拡張できません。
ハーブキャディ

2
実験的な核融合テーブルサービスは12月3日、2019年にシャットダウンされることに注意してください
ジョナス

12

KMLを複数のKMLに分割し、親KMLでより小さいkmlsを参照できます。少なくともこれにより、ファイルサイズがかなりのレベルに下がり、はるかに大きなデータセットをKMLとして参照できるようになります。

正直なところ、KMLは、機能と関連属性がほとんどない小さなデータセットにのみ適しています。私はファイルデータソースとしてそれの近くに行きません。これらのファイルが大きくなっているのを見ている場合は、別のデータ型を調べるか、間違いなく分散データセットのGeoServer / MapServerルートを調べます。


2
ただし、ネットワークKML(スーパーオーバーレイは大規模なデータセット用の設計です)が必要ですが、Webサーバーとレンダリングソフトウェアが必要ですGeoserverはこのタイプのKMZでうまく機能します-Google Maps APIでKMLの使用が制限されているため、Google Earthで最適に動作します。
マッパーズ

Google Earth Enterprise Clientの場合を除き、スーパーオーバーレイでそれほど幸運なことはありませんでした。私はこれに多くの時間を費やしませんでしたが。間違いなく探索するオプション、+ 1 @Mapperz
OptimizePrime

1
GeoServerをOracleで使用すると非常にうまく機能し、KMZ(スーパーオーバーレイ)のレンダリング(ユーザーに非常に役立つライブ(常時更新)データ)-更新時にスピードを上げるためにジオサーバーを調整する必要がありました。
マッパーズ

8

Google Maps APIにあまり時間を費やしていない場合は、独自のKMLファイルを読み取ることができるクライアント側KMLパーサーを備えたOpenLayersに切り替えることができます。以下の例を参照してください。

http://openlayers.org/dev/examples/kml-layer.html

ただし、15MBのファイルの場合、これによりブラウザが停止する可能性があります。ファイルサイズの上限に近づくと、おそらくGoogleサーバーでもかなり遅くなります。

15MBレベルの詳細が本当に必要ですか、それとも情報をあまり失うことなくKMLを単純化できますか?

クライアント側でベクトル/ジオメトリにアクセスする必要がありますか?このデータを画像として提供できますか?

これらのどちらも不可能な場合は、何らかのマップサービスタイプのソフトウェアを調べる必要があります。ArcGIS ServerのGeoServerとともに、MapServerがKMLを提供するか、WFSとして機能することを検討できます。mapserverを使用する利点は、リクエストがマップ内のデータのみを返すことです。これにより、ネットワークトラフィックが減少し、ロード時間が短縮されます。


Google Fusionテーブルを試した後、Guddieのアプローチが実装するのがはるかに簡単です。一度にアップロードできるKMLは100 MBのみですが、各ユーザーには250 MBのストレージオプションがあります(執筆時点)。
geographika

2

バージョン3を使用している場合、一意の識別子を除くすべての属性情報を取り除き、ユーザーが機能をクリックするたびにWebサービスへのajax呼び出しを介して情報を要求できます。10 MB以上のポイントがある場合は、それらすべてのポイントを一度に表示するのではなく、何らかのクラスタリングを行うことをお勧めします。また、グラウンドオーバーレイを個別のKMLファイルに分離することもできます。



2

MapLargeには興味深いソリューションがあります-サーバーでデータを複製し、独自のソフトウェアを使用してタイルをその場で生成するという重い作業を行うことができます。これらは、Google Maps、OpenLayersなどからのベースマップにこれらをオーバーレイできるJavascript APIを提供します。

それらの例をいくつか確認してください-速度は印象的です:

無料ではありませんが、別のサーバーを立ち上げてこれらのレイヤーを生成する手間と費用を望まない人にとっては良い選択肢です。

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