GeoJSONをCSVへ変換し、項目編集後に再びGeoJSONへ戻す作業は、地図データ編集でよく使われる方法です。しかし、CSV経由で再生成したGeoJSONを地図上で表示すると、「nameラベルがマーカーに重なる」「アイコンのラベル表示をONにするとマーカーが隠れる」といった現象が発生することがあります。特に、元の雛形GeoJSONでは問題なかった場合、「なぜ崩れたのか分からない」と混乱しやすいです。この記事では、GeoJSON→CSV→GeoJSON変換後にラベル位置が重なる原因と、マーカーとラベルをずらす方法を初心者向けに分かりやすく解説します。
まず理解したい「GeoJSONにはラベル位置情報がない場合が多い」こと
GeoJSON自体は、基本的に「座標」と「属性情報」を保存する形式です。
例えば以下のような構造になっています。
{"type":"Feature","properties":{"name":"東京"},"geometry":{"type":"Point","coordinates":[139.76,35.68]}}
この中には「ラベルをどこに表示するか」という細かい描画設定は通常含まれていません。
つまり、ラベル位置はGeoJSONではなく、表示側ソフトの仕様に依存するケースが多いです。
CSV変換時にスタイル情報が失われている可能性
質問のような変換サイトでは、GeoJSONの「属性データ」は保持されても、描画用のスタイル情報が失われることがあります。
例えば元データでは以下が内部的に設定されていた可能性があります。
- ラベルオフセット
- アイコンサイズ
- ラベルアンカー位置
- Mapbox用style設定
- Leaflet用描画設定
しかしCSVへ変換すると、通常は単純な表データになるため、これらが消えてしまいます。
「name」だけではラベル位置調整できない理由
GeoJSONでよく使われる「name」プロパティは、単なる文字列属性です。
つまり以下のようなものです。
| 項目 | 役割 |
|---|---|
| name | 表示名 |
| latitude | 緯度 |
| longitude | 経度 |
ラベルを右にずらす・上に表示するといった情報は通常含まれていません。
そのため、「nameがあるだけ」のGeoJSONでは、表示ソフト側が中央配置してしまうことがあります。
ラベル位置をずらす方法
実際にラベル位置をずらす方法は、使用している地図表示環境によって異なります。
Leaflet系の場合
Leafletでは、tooltipやpopupにoffsetを指定できます。
offset: [10, -10]
これによりラベルを右上などへずらせます。
Mapbox系の場合
Mapboxでは以下のような設定があります。
- text-offset
- text-anchor
- icon-offset
例えば以下です。
"text-offset": [1, 1]
これでラベルをマーカーから離せます。
Google My Maps系の場合
Google系は細かいラベル制御ができないことがあります。
その場合はアイコン変更や文字短縮で調整するケースが多いです。
CSV経由変換で崩れやすい理由
CSVは本来、表形式データ保存用です。
そのため以下情報が失われやすいです。
- スタイル
- レイヤー設定
- ラベル配置
- 表示優先順位
つまり、「GeoJSON→CSV→GeoJSON」は属性編集には便利ですが、描画設定維持には向いていない場合があります。
おすすめは「GeoJSONを直接編集する方法」
もしラベル位置や表示設定を維持したい場合は、CSV変換を挟まずGeoJSONを直接編集する方法が安定しやすいです。
例えば以下エディタが便利です。
- VSCode
- Notepad++
- geojson.io
属性追加だけならJSON編集の方が崩れにくいことがあります。
ラベルを重なりにくくする実践テクニック
実務では、完全自動で綺麗に配置されることは少なく、以下調整を組み合わせることが多いです。
| 方法 | 効果 |
|---|---|
| ラベル短縮 | 重なり軽減 |
| アイコン縮小 | 視認性向上 |
| ズーム時のみ表示 | 混雑回避 |
| ラベルオフセット | 重複回避 |
特に地図上で地点が密集している場合、完全回避はかなり難しいです。
雛形GeoJSONでは重ならなかった理由
元データでは以下のどちらかが含まれていた可能性があります。
- 表示アプリ側の自動配置
- 追加スタイル情報
しかしCSV変換後に単純なPointデータへ変換されることで、表示ソフトがデフォルト配置に戻ってしまった可能性があります。
今後おすすめの管理方法
地図データを頻繁に編集する場合は、以下のように分けると管理しやすくなります。
- GeoJSON本体保存
- CSVは属性編集用
- スタイル設定は別管理
この構成にすると、表示崩れを減らしやすくなります。
まとめ
GeoJSONをCSVへ変換して再度GeoJSONへ戻した際に、nameラベルがマーカーと重なる原因は、CSV変換時にラベル位置やスタイル情報が失われるためであるケースが多いです。
GeoJSON自体は基本的に座標と属性保存が中心であり、ラベル位置はLeaflet・Mapbox・Google系など表示側の設定に依存することが少なくありません。
ラベルをずらしたい場合は、text-offsetやoffset設定を利用するか、GeoJSONを直接編集する運用に切り替えると安定しやすくなります。特にCSVは便利な反面、描画情報維持には向かない点を理解しておくと、今後の地図編集がかなり楽になります。


コメント