以前からkiyoshi.hさんが公開されたような、都道府県 or 市町村 or 町丁・大字境界データをポリゴンでAPI化できないかと思考覚悟し
ておりました。
http://mapdb.willnet.ad.jp/ にもお書きになっている通り、国勢調査のデータに境界データがあったんですねぇ…
地図と言ったら国交省! → 数値地図!数値地図! な思い込みをしておりまして、総務省は全く未確認でした。
心機一転、私も再度お勉強をさせていただこうと思い直しました。
すばらしい情報を提供していただきありがとうございます。
いつもお世話になっております。
DLページ見つかったようで安心しました。
ですが、市区町村別に国勢調査データと一緒にをDLするのがめんどくさくなってきた今日この頃です。
> kiyoshi.hさん
GMapと全然関係ないご質問で申し訳ありませんが、MS-SQLにはどのように境界データを格納されておられるのでしょうか?
・都道府県マスタ
・市町村マスタ
・町丁・字マスタ
・緯度経度トラン(緯度経度のみ保存)
みたいな感じでしょうか?
kiyoshi.hさんが公開されている「町エリア識別β」みたいなことをしようとする時の汎用性を考えると、どのように保存すればいいのか悩んでおり
ます。
--SQL Server 2008で、空間データ型で判断する関数を利用してます。
座標がポリゴン内に含まれるかどうかの判定ができるので。
--実際とは異なりますが
CREATE TABLE [dbo].[町丁境界](
[id] [int] NOT NULL,
[points] [varchar](max) NOT NULL, --ポリゴン座標データ
[都道府県名] [nvarchar](10) NOT NULL,
[市郡名] [nvarchar](100) NULL,
[町名] [nvarchar](100) NULL,
[丁名] [nvarchar](100) NULL,
[中心x] [nvarchar](20) NULL,
[中心y] [nvarchar](20) NULL,
[mesh] [varchar](11) NULL, --地域メッシュ
[jcode] [varchar](13) NULL, --地域コード
[enc_point] [varchar](max) NULL,--ポリゴン座標データをエンコード圧縮
[enc_level] [varchar](max) NULL,--ポリゴン座標データをエンコード圧縮
[mn_x] [varchar](20) NULL, --ポリゴン座標データの最少x
[mn_y] [varchar](20) NULL, --ポリゴン座標データの最少y
[mx_x] [varchar](20) NULL, --ポリゴン座標データの最大x
[mx_y] [varchar](20) NULL --ポリゴン座標データの最大y
)
--苦労したポイント--
座標からエリアを高速に探すための工夫
①ポリゴン座標データの最少最大(4隅)からインデックスで探す(複数ポリゴンに絞られる)
②上記該当ポリゴン内からポリゴン内の有無を空間データ型で判断する関数を作成し
座標が含まれるポリゴンを選択
・・・geometry::STGeomFromText('POLYGON(('+[ポイント]+'))', 0)・・・空間データ型
・・・@g2.STWithin(@g1)・・・
町丁境界は 約22万件のポリゴンがあります。
市郡境界は 約8000件のポリゴンがあります。