明日の為に〜改めGoogle MapsでJavaScriptのお勉強(PostGISと.NETもあるよ) その2

Google MapsJavaScriptprototype.jsのお勉強ネタなのです。


Google Mapsの基本設定と、画面リサイズへの追従あたりについては直ぐに出来てしまうわけですが。
prototype.jsについては、今のところ$()くらいしか使ってないんですけど(・∀・)


で、JavaScriptとしては、地図を移動したときのマーカー一覧リクエストの発行、コールバックでのマーカー更新とかを書いていくことになるわけですが。


でもその前に、地図上に表示するマーカーを管理するデータベースを作っておきます。
データベースは地理情報を簡単に扱えるPostGISを利用します。
開発環境にはWindows版のPostgreSQL8.1をPostGISオプション付きでインストールしているので、特に面倒もなく地理情報を使えます(´∇`)


まず、データベースの作成です。

CREATEDB usamap;

次にマーカー用情報のテーブルとして、こんなカンジのものを作成します。

CREATE TABLE spots
(
   id serial,
   name text NOT NULL,
   CONSTRAINT pk_spots PRIMARY KEY (id)
) WITH OIDS;

GEOMETRY型のフィールドはCREATE TABLEで作成するのではなくて、AddGeometryColumn()で追加します。
テーブルに点(Point)の空間データ用フィールドを追加するには、こんなカンジのSQLを実行します。
4326っていうのはWGS-84系の指定です。

SELECT AddGeometryColumn('usamap', 'spots', 'spot_geometry', 4326, 'POINT', 2);

このGEOMETRY型フィールドにインデックスも追加しておきます。

CREATE INDEX idx_spots_geometry ON spots USING GIST (spot_geometry GIST_GEOMETRY_OPS);

データベースが用意できたので、テストデータの投入と検索の実験をしておきます。

// データ投入
INSERT INTO spots ( name, spot_geometry )
    VALUES ( '甲府駅', GeometryFromText( 'POINT(138.5690139 35.6670556)', 4326 ) );

// 検索実行(ポリゴンの指定がベタですけど)
SELECT id, name, AsText(spot_geometry) FROM spots
    WHERE spot_geometry && GeometryFromText( 'POLYGON((138.5 35.6, 138.6 35.6, 138.6 35.7, 138.5 35.7, 138.5 35.6))', 4326 );

 id |  name   |            astext
----+---------+-------------------------------
  1 | 甲府駅  | POINT(138.5690139 35.6670556)

なお、PostGISの情報については日本PostgreSQLユーザ会の資料を参考にしました。
あと、ここギコ!さんのBlogにもこの辺の情報があったと思います。


で、データベースは用意できたので、次は.NETからのアクセスについてです(`・ω・´)


なんかJavaScriptの話では無くなってきていますけどね…(´ω`)