2

私は、以下を実行するGoogleマップアプリケーションに取り組んでいます(低ズームレベルで):

  1. 一連のポリゴン オーバーレイをマップに印刷します。これらのポリゴンは、Google Earth で作成した KML ファイルから作成されています。基本的に、これらのポリゴンは大陸サイズの地球の塊をカバーしています。そのうちの 15 は、世界の全土をカバーしています。

  2. 各ポリゴン オーバーレイの上に、そのポリゴン内に存在するポイントの総数を表す数値が表示されます。

マップに表示したいポイントには、国を表すフィールドと緯度/経度のフィールドがあります。合計を取得する方法は、次のように国コードで各ポリゴンのクエリを実行することです。

east_europe_total = Point.objects.filter( Q(country_code='TR') | Q(country_code='CZ') ... ).count()

国境を国にまたがらせたい場合、またはポリゴンの「セクター」を再編成したい場合、これはあまり良くありません。より良い解決策は、KML ファイルをデータベース (PostGIS) に渡して、すべて整理してもらうことです。これは何らかの方法で可能ですか?そうでない場合は、KML ファイルを、Google マップに簡単に挿入でき、postGIS でクエリできる形式に変換するのはどうですか?

4

2 に答える 2

6

あなたの要求に完全に答えるわけではありませんが、この記事は読みやすい物語 (あなたが必要としているものとは多少異なる操作についてのものであり、また当時私がやろうとしていたこととも異なるものです) の両方で非常に貴重であることがわかりました。 -- ただし、KML ファイルとやり取りするには PostGIS が必要です)。記事の著者が言うように、

一般に、非常にアカデミックで数学的な GIS 専門用語がたくさんあり、初心者にとっては戸惑うものです (例: 凸包)。

...そして、このような読みやすい記事 (多くのツールへのポインター &c を含む) が出発点です。

要約すると、最初に、KML を PostGIS が認識している [または具体的には ogr2ogr が認識している] GML などの形式に変換する受け入れ可能な方法を見つける必要があります (そしてそれを検証します) -- そしてもちろん、ポリゴン内のポイント操作も必要ですが、それは最初の一歩です。

于 2009-07-06T03:35:59.273 に答える
0

いつでも XML を解析して座標を取得し、その座標配列に基づいてシェープ ファイルを生成できます。とにかくルビーで最初の部分を手伝うことができます...

require 'nokogiri'
x  = Nokogiri::XML(File.open("fn.kml").read)
ary_of_coords = x.css("//coordinates").children.first.inner_text.gsub("\n", "").gsub("\t", "").split(",0")
于 2013-08-16T02:07:37.813 に答える