GeoJSONをCSV変換後にラベルがマーカーと重なる原因は?nameラベル位置をずらす方法を解説

プログラミング

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データへ変換されることで、表示ソフトがデフォルト配置に戻ってしまった可能性があります。

今後おすすめの管理方法

地図データを頻繁に編集する場合は、以下のように分けると管理しやすくなります。

  1. GeoJSON本体保存
  2. CSVは属性編集用
  3. スタイル設定は別管理

この構成にすると、表示崩れを減らしやすくなります。

まとめ

GeoJSONをCSVへ変換して再度GeoJSONへ戻した際に、nameラベルがマーカーと重なる原因は、CSV変換時にラベル位置やスタイル情報が失われるためであるケースが多いです。

GeoJSON自体は基本的に座標と属性保存が中心であり、ラベル位置はLeaflet・Mapbox・Google系など表示側の設定に依存することが少なくありません。

ラベルをずらしたい場合は、text-offsetやoffset設定を利用するか、GeoJSONを直接編集する運用に切り替えると安定しやすくなります。特にCSVは便利な反面、描画情報維持には向かない点を理解しておくと、今後の地図編集がかなり楽になります。

コメント

タイトルとURLをコピーしました