マップファイル(Mapfile)Label ENCODING

担当業務から離れてしまい、MapServerをいじる機会がほぼなくなってしまい、ここの更新も止まっています。

離れる直前に悩んだいたのが、標記の件です。

結論としては、Windows環境下で、Shift-JIS形式で文字を扱うとき、
ENCODING="CP932"
を利用すると、幸せであるということです。
MapServerの国際化の中で、先輩方のご尽力で日本語環境も扱えるようになったのですが、このときのドキュメント類を探すことができませんでした。
下記URLで表示されるページが唯一の手がかりと思っていましたが、現在は、関連する情報が表示されません。
http://www.foss4g.org/FOSS4G/MAPSERVER/mpsnf-i18n-en.html

Windows環境下の利用において、ラベルで日本語表示をする時は、
http://mapserver.org/mapfile/label.html
等を参考にすると、

LABEL
...
ENCODING "SJIS"
...
END

のように記述し、SJIS,UTF-8,EUCなどの指定をするのが一般的です。

ただ、Windowsの場合、俗にいうローマ数字の2バイト文字や(株)などの、いわゆる機種依存文字が上記の指定では、UTF-8でのみ表示できます。
SJISで指定すると対応するコードがないと判断され文字化けしてしまいます。

UTF-8で統一すれば?というご指摘がもっともですが、なかなかそうも行かない状況が
でてきます。
Windows上では、Shapefileのdbfや、MapInfoのDATなどは、Shift-JISで記述されています。
むりやりdbfをUTF-8化することも可能ですが、データの再利用性など弊害が多くなります。

データに関しては、Shift-JISのものはShift-JISのまま、UTF-8はUTF-8のままとして、ラベルだけを文字化けなく表示させたい。
ただ、日本人は、○に1や全角のローマ数字などの機種依存文字ををデータの中の値として利用することに、抵抗がなく、いちいちこれを修正するのはたいへんです。

ソースを深く追求していないのですが、MapServer上では、文字のコード変換をiconvライブラリが変換していると思われます。
iconvを使って、UTF-8をSJISにした場合、機種依存文字があると、文字化けを起こすことがあります。iconvのコードページ拡張などがされているものが、リリースされていたりなどからもこの問題が認識されていることがわかります。

4ヶ月も悩んだあげく、だめもとで、ENCODING に指定できる、SJIS,UTF-8,EUC のところに、CP932 と入れてみたら、いままでの悩みがいっぺんに解消されました。

この機種依存文字は、NECによる拡張やIBMの拡張があり、内容については、
下記ページ等を参照していただきたいのですが、同じ文字でも2つコードがあったりと、
日本語の文字に関しては多くの議論がされているようです。
http://ja.wikipedia.org/wiki/Microsoftコードページ932

Windows環境下での利用も増えつつあるよう思えるので、日本語をラベル表示することがある方は、是非試してみてください。
bugna | MapServer | 10:09 | comments(0) | trackbacks(0) | - | - |

MapServerからODBCでSQLiteに接続する

MapServerからSQLiteへの接続は OGR 経由で接続できることは、前の記事で触れました。ただ、事前準備として ogr2ogr でShapefileなどから、SQLiteにデータを投入しておく必要があります。
ポリゴンやラインなどを扱うには、このような準備をしておかなければならないのは、なんとなく理解できるのですが、ポイントデータだけを扱いたいのに、わざわざogr2ogrでデータ投入するのもなんだなぁ、と思っていました。

そこで、MapServerから SQLiteに "ODBC" で接続して、経緯度の値からポイントの表示ができないかをためしてみました。

用意するのは、
・SQLiteのdbファイル
・SQLiteのODBCドライバ → http://www.ch-werner.de/sqliteodbc/
・Virtual Spatial Data (ODBC/OVF) の VRTファイル →Virtual File Format

です。

ここでのポイントは、VRTファイルの記述の方法です。WindowsでODBCのデータベースに接続するときは、
・コントロールパネル−管理ツール−データソース(ODBC)で、『システムDSN』に登録しないとうまくいかないようだよ、という記述をよく見かけます。

SQLiteはファイルベースのデータベースなのに、わざわざシステムDSNに登録するのはナンセンスです。
『ファイルDSN』を作ってで接続できないか、ググって見てもぜんぜん情報がありません。
だめもとで、ogrinfo を使って、
<OGRVRTDataSource>
<OGRVRTLayer name="mp3Lst">
<SrcDataSource>ODBC:@DSN名</SrcDataSource>
・・・

のところをいろいろ変えつつ、2時間ばかし粘った挙句、うまく行く方法を見つけました。
続きを読む >>
bugna | MapServer | 14:41 | comments(0) | trackbacks(0) | - | - |

CSVからKMLに変換

CSVファイルからKMLファイルに変換できないかといろいろ調べていましたが、ふとKMLがOGCに提供されて、OGC KMLになったという記事を思い出しました。

OGCに承認されるということは、今後においてKMLを使った記述はますます増えていくことと思われます。

で、ふとGDAL/OGRで扱われているフォーマットを再度確認したところ、CSVKMLもあります。

ということは、GDAL/OGRの ogr2ogrを使えば、一発で変換できるだろうと想像しました。

その結果・・・
続きを読む >>
bugna | MapServer | 09:43 | comments(0) | trackbacks(0) | - | - |

ラスターの色が一瞬で一色に!

MapServerでラスターデータを表示にチャレンジしています。gdal_csharp.dll も使って、動的にラスタデータを作って、MapServerで表示、なんていうのをVBから操作してます。

なんとか、HFAフォーマットのラスタデータの作成に成功し、1ファイルに8つのバンド(レイヤー)を含めることができました。各バンドも、Double型など値として持たせることができ、Run Length で圧縮をかけると、100万個のデータもわずか3MBのファイルに収めることができました。

で、本題ですが、やっとできたラスターデータを表示する設定をマップファイルに書き込んで、いざ表示すると、、無事に表示されます。やった!と喜んでいると、ある瞬間に、設定したCLASSの値がいっせいに同じ色に化けてしまいました。。。
続きを読む >>
bugna | MapServer | 11:50 | comments(0) | trackbacks(0) | - | - |

denom は分母

MapServer 4.10 to 5.0 Migration Guideでは、Scale Parameters である、mapObj.scale → mapObj.scaledenom、mapObj.minscale → mapObj.minscaledenom、mapObj.maxscale → mapObj.maxscaledenom などと変わった。

で、denom って何?と思ったところ、分数の分母のことみたいです。ちなみに分子は、numerのようです。

mapObj.scale は、1:24000 の 24000 を指していたようですが、わかりにくいということで、denom をつけて、分母を示していますよーと明確にしたようだ。

bugna | MapServer | 23:32 | comments(0) | trackbacks(0) | - | - |

OpenLayersの表示ができた(やっと・・・)

ブラウザは、FireFoxとSafariばかりつかっていたので、バグな明保野のトップページに設置した、OpenLayersの地図表示がIEで表示できていないことに、今の今までまったく気づいていませんでした!

すみません...

で、IEで出るエラーがどこのJavaScriptで出ているのかぜんぜんわからなかったのですが、ようやく、Google Maps API からであることがわかり直しました。

普段からGoogle Map API を使っている方には、常識なのでしょうが、JavaScript に charset="utf-8" の設定漏れが原因でした。。

これで、bugna がシロートであるのがバレバレになったかも。あっでも、よくあるバグをしでかしたのに気づいただけでもよかったのかな。

ついでに、APIを2.82にしたところ、スクロールが変なのも直りました!!

OpenLayersで使うときは、こんな感じ。<>は全角なのでコピペするときは気をつけて!

<script type="text/javascript" charset="utf-8" src="http://maps.google.com/maps?file=api&v=2.82&key=ホニャララ"></script>
bugna | MapServer | 17:30 | comments(0) | trackbacks(0) | - | - |

VBからGDALのハンドリング

FWToolsのWindows用のパッケージには、gdal_csharp.dll、ogr_csharp.dll、osr_csharp.dllが含まれている。

これらは、VB(.NET) で、mapscirpt_csharp.dll を参照設定するのと同じようにすると、GDAL/OGRのクラスが使えるようになる。

スクリプト系の言語になじみが薄いことから、GDAL/OGRで何ができるのかよく知りませんでしたが、これらに含まれるクラスは、ベクターデータ、ラスターデータに関して、ファイルの作成、変換、座標系の操作や、SQLを使った検索などが行うことができます。
続きを読む >>
bugna | MapServer | 17:59 | comments(0) | trackbacks(0) | - | - |

文系のためのMapserver

文系のためのMapServer

普段、解析系のGIS利用支援やシステム開発を行っているが、縁があって人文系の研究結果をWebGISにしてみる仕事があった。

MapServerを使っていると、その奥深い技術の部分をいろいろ書きたくなる。
しかし、人文系の人には不要な情報が多い。

それらを削ぎ落として、MapServerを説明ができないかチャレンジしてみた。
はたして、どうであろうか?
続きを読む >>
bugna | MapServer | 02:17 | comments(0) | trackbacks(0) | - | - |
1/1PAGES | |

08
--
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
--
>>
<<
--