数値地図25000(空間データ基盤)の仕様(標高データ)

はじめに

 国土交通省国土地理院が作成している数値地図25000(空間データ基盤)は日本全国 を2万5000分の1地形図に相当する精度を持つ地形データだ。
 道路中心線、鉄道中心線、河川中心線、水涯線、海岸線、行政界、基準点、地名、公共施 設、標高の10項目のデータが含まれる。しかしこれらのデータ表記は(私が調べた限りでは) 一般に公開されていない。
 ここでは私が勝手に想像した標高に関するデータ仕様を紹介する。



関連ファイル


・xxxxxMH.sal

 「xxxxx」の部分は市区町村コード。例えば西宮市であれば「28204MH.sal」というファ イル名になる。
 このファイルには標高値に関するデータが格納されている。


・xxxxxMH.slp

 「xxxxx」の部分は市区町村コード。例えば西宮市であれば「28204MH.slp」というファ イル名になる。
 このファイルには座標に関するデータが格納されている。


・xxxxx.slm

 「xxxxx」の部分は市区町村コード。例えば西宮市であれば「28204.slm」というファ イル名になる。
 このファイルには座標のオフセットデータが格納されている。



xxxxxMH.salファイル

MH(ID{MH000001}){HK{0}PT(ID{PM000001}){000001}}
MH(ID{MH000002}){HK{0}PT(ID{PM000002}){000002}}
MH(ID{MH000003}){HK{0}PT(ID{PM000003}){000003}}
...(省略)...
MH(ID{MH031785}){HK{181}PT(ID{PM031785}){031785}}
MH(ID{MH031786}){HK{152}PT(ID{PM031786}){031786}}
MH(ID{MH031787}){HK{127}PT(ID{PM031787}){031787}}

 1行1データのテキストファイルとして保存されている。

データ部分を分離すると以下のように表現できる。
MH(ID{8byte}){HK{?byte}PT(ID{8byte}){6byte}}
MH(ID{m_strMHID}){HK{m_nHK}PT(ID{m_strPTID}){m_nPositionNo}}
CString m_strMHID; //メッシュ標高ID long m_nHK; //標高値 CString m_strPTID; //ポイントID long m_nPositionNo; //slpファイルの対応行番号 // ※標高値以外は固定長
 標高値の単位はメートル。



xxxxxMH.slpファイル

0489000000030000
0491000000030000
0487000000050000
...(省略)...
0225000006290000
0227000006290000
0229000006290000

 1行1データのテキストファイルとして保存されている。

データ部分を分離すると以下のように表現できる。
0489000000030000
xxxxxxxxyyyyyyyy

	//x:m_nLongitude(経度)
	//y:m_nLatitude(緯度)

	long	m_nLongitude;		//経度
	long	m_nLatitude;		//緯度

	// ※両値とも8byteの固定長




xxxxx.slmファイル

4868260000,1248680000
...(省略)...

 テキストファイルとして保存されている。
 今回利用するのは1行目のみ。

4868260000,1248680000
xxxxxxxxxx,yyyyyyyyyy

	//x:m_nLongitudeOffset(経度オフセット)
	//y:m_nLatitudeOffset(緯度オフセット)

	long	m_nLongitudeOffset;		//経度オフセット
	long	m_nLatitudeOffset;		//緯度オフセット

	// ※両データは「,」セパレート



データの使い方

 まずxxxxxMH.salファイルを読み込み、m_nHKとm_nPositionNoを取得する。次に xxxxxMH.slpファイルを開き、m_nPositionNoに対応する行数のm_nLongitudeと m_nLatitudeを取り出す。最後にxxxxx.slmファイルからオフセット値を取り出して 緯度・経度に加算する。
 これである座標点(緯度・経度)に対する標高を取得することができる。

 例えば、メッシュ標高ID「MH000001」の標高は海抜ゼロメートル、東経487315.0000秒 (135度21分55秒000)、北緯124871.0000秒(34度41分11秒0000)となる。これらは JGD2000の値となる。

これらの標高データのみをもとにして兵庫県西宮市を作図すると以下のようになる。



カテゴリー「VC++ TIPS」 のエントリー