私の目標は、Postgisデータベースに動的に入力されたデータを使用してGoogleマップにさまざまな形状(ポリゴン、ポイント、ラインストリング)を表示することです(つまり、マップの変更をリアルタイムで確認できます)。座標を解析してグーグルマップに空間構造を再入力する代わりに、postgisですでに提供されている空間構造(形状がラインストリングかポリゴンかなどをすでに指定している)を使用してこれを行う方法を探していました。GoogleMapsAPIがkmlデータ形式と互換性があることを確認しました。そして、postgisデータをkml形式に変換する必要があることを読みました。フォーラムでFWToolsを介してpostgisデータをkmlに変換する実際のプロセスについて読んだことがありますが、役立つものは何も見つかりませんでした。私はkmlを初めて使用しますが、postgis、perl、PHPに精通しています。postgisデータをkmlに変換するプロセスのチュートリアルはありますか?どこから始めればよいですか?助けてくれてありがとう
2 に答える
PostGISを使用してKMLに直接変換できます。
SELECT ST_AsKML(geometry) from MyTable;
ST_AsKMLは、WKT、GML、GeoJSONなどを含むいくつかの出力形式の1つです。
Google Earthで動的データを表示するための一般的なパターンは、NetworkLink要素でKMLを使用することです。リンクをにviewRefreshMode
等しくするonStop
と、Google Earthはバウンディングボックスパラメータを添付して(おそらくPHPによって提供されるURLに)リクエストを送信します。バウンディングボックスを使用してPostGISデータベースの機能をクエリし、結果をkmlとして返します。これは、機能がたくさんあるが、ユーザーが見ている地域の機能だけを取得したい場合に最適です。
アプリケーションの複雑さによっては、GeoDjangoも確認することをお勧めします。(PostGISに精通していることは大きな有利なスタートです!)
次のようなテキスト変換関数を使用して、PostgresDBから空間データのテキスト表現を取得できます。
SELECT AsText(MyGemoetry) from MyTable
次に、文字列を解析し、PostGISジオメトリタイプに応じてさまざまなAPI関数を使用してオブジェクトを作成し、これらのオブジェクトをDOMのような方法でメインのGEプラグインオブジェクトに追加します。
JavaScriptに精通していて、XMLの基本的な知識がある場合は、http://code.google.com/apis/earth/documentation/reference/から始めることをお勧めします。
オブジェクトに一意のIDを指定することを忘れないでください。そうすれば、後でドロップ/変更するためにそれらを見つけることができます。
ここでいくつかのインスピレーションを得て、リンクされた「locator.js」ファイルを表示し、関数PaintSubField(Coord)を見ることができます...これは別の方法で、少し粗雑ですが効果的で、個々の親/子オブジェクトが多すぎることを回避しますと構造
また、サンプルアプリケーションを参照して、「ラピッドプロトタイピング」のコードプレイグラウンドを使用することもできます。
「リアルタイム」では、少なくとも、生成/再描画ルーチンをリンクできるイベントが必要です。
頑張ってMikeD