GeoJSONの重複座標が実務で問題になる理由
GeoJSONを扱う現場では、座標が重複しているデータに出会うことがあります。地図上では一見きれいに見えていても、同じ位置の点が何度も登録されていたり、線の途中に不要な同一点が連続していたり、面の境界に意図しない折り返しが含まれていたりするケースです。こうした重複座標は、表示だけを目的にしている段階では見逃されやすい一方、集計、距離確認、面積計算、隣接判定、図面化、現地確認用データへの変換などに進むと、思わぬミスの原因になることがあります。
GeoJSONは、点、線、面などの形状情報と、名称や番号などの属性情報を組み合わせて扱える形式です。そのため、現地調査、台帳整理、区域確認、施設管理、測量成果の確認、図面との照合など、さまざまな実務で使われます。ただし、便利である反面、データの作られ方によって品質に差が出やすい形式でもあります。手入力、別形式からの変換、複数データの結合、既存図面からの抽出、現地取得データの取り込みなど、作成経路が複数あるほど、同じ座標や似た座標が入り込む可能性は高くなります。
重複座標の整理で大切なのは、単純に同じ数値を削除すればよいと考えないことです。GeoJSONでは、同じ座標が不要な場合もあれば、構造上必要な場合もあります。特に面を表すPolygonでは、外周や穴を構成するリングを閉じるため、始点と終点を同じ値にする必要があります。この座標は不要な重複ではなく、面を成立させるための要素です。また、線の折れ点として意味を持つ座標や、隣接する別施設を表すために同じ位置に存在する点もあります。ここを確認せずに一括削除すると、形状が壊れたり、属性との対応がずれたり、後工程でさらに大きな修正が必要になったりします。
実務担当者がgeojson 使い方を調べる場面では、単にファイルを表示したいだけでなく、受け取ったデータを安全に使える状態に整えたいという目的もあります。たとえば、現地確認用に点データを整理したい、図面に重ねる前に不要な重なりを減らしたい、区域データの境界を確認したい、納品前に形状エラーを減らしたい、といった場面です。そのような作業では、重複座標を見つけるだけでなく、何を残し、何を整理し、どのように記録するかまで考える必要があります。
本記事では、GeoJSONの重複座標を整理してミスを減らすために、実務で確認したい4つの視点を解説します。ポイントは、同一点と近接点を分けて見ること、線や面の構造を壊さないこと、属性や順序との関係を確認すること、整理後に表示と記録で検証することです。重複座標の整理は地味な作業ですが、データを安心して使うための土台になります。
確認1:同一点の重複か近接点の混在かを見分ける
最初に確認したいのは、重複している座標が本当に同じ点なのか、それとも非常に近い別の点なのかという点です。GeoJSONでは座標が数値で表されるため、見た目では同じ場所に見えても、実際には小数点以下の値がわずかに異なる場合があります。表示縮尺を広くしていると重なって見える点でも、拡大すると少し離れていることがあります。反対に、数値が完全に同じであっても、別の属性を持つ点として意味がある場合もあります。
同一点の重複とは、座標値が完全に一致しており、かつ同じ対象を表していると考えられる状態です。たとえば、同じ施設点が取り込み時の操作ミスで二重に登録されている場合や、複数のファイルを結合したときに同一レコードが重なって入った場合が該当します。このような重複は、整理対象になる可能性が高いものです。ただし、同じ座標に複数の属性がぶら下がっている場合は、属性情報を比較してから判断する必要があります。同じ場所にある複数の管理対象を別々の点として表していることもあるためです。
近接点の混在とは、座標値は完全には一致しないものの、地図上ではほぼ同じ位置に見える点が複数ある状態です。これは、取得精度の違い、丸め処理の違い、座標変換時の誤差、手入力時の微差、現地での測位条件の違いなどによって発生します。近接点をすべて重複として扱うと、本来別々に管理すべき点まで統合してしまうおそれがあります。特に道路施設、境界付近の点、建物周辺の設備、細かい区画を扱うデータでは、用途によっては数十センチから数メートルの違いが重要になることがあります。
この確認では、まず完全一致の座標と、一定範囲内にある近接座標を分けて把握することが大切です。完全一致は機械的に抽出しやすい一方、近接点は許容範囲の設定が必要になります。許容範囲を広くしすぎると別物を同一視してしまい、狭くしすぎると整理すべき点を見逃します。許容範囲は、データの用途、取得方法、必要な精度、図面や現地確認との関係を踏まえて決めるべきです。表示確認用の概略データと、施工や境界確認に近い精度を求めるデータでは、同じ基準で扱うべきではありません。
また、座標の桁数だけで品質を判断しないことも重要です。小数点以下の桁数が多いからといって、必ず高精度とは限りません。元データの精度が低いまま、変換や出力の処理だけで桁数が増えていることもあります。逆に、桁数がそろえられているために完全一致して見える座標でも、元の取得意図が異なる場合があります。重複座標の整理では、数値の一致だけでなく、データの作成経緯と属性の意味を合わせて確認する姿勢が必要です。
実務では、まず対象データの中から座標値が完全に同じものを抽出し、次に近接している点を別枠で確認すると整理しやすくなります。そのうえで、属性名、管理番号、分類、取得日、レイヤ相当の区分などを見比べます。同じ座標に同じ属性が重なっているなら削除候補になりやすく、同じ座標でも属性が異なるなら統合せず残す判断が必要になることがあります。ここを最初に丁寧に分けておくと、後の作業で消してはいけない点まで消すミスを減らせます。
確認2:線と面の構造上必要な座標を消さない
次に確認したいのは、重複して見える座標がGeoJSONの形状構造上必要なものではないかという点です。GeoJSONでは、点、線、面で座標の役割が異なります。Pointでは座標そのものが対象位置を示しますが、LineStringでは座標の並びが経路や境界を表します。Polygonでは、座標の並びが外周や内側の穴を表し、リングを閉じるために始点と終点を一致させます。そのため、同じ座標が含まれているからといって、すべてを不要と判断するのは危険です。
線データで問題になりやすいのは、連続する同一座標です。たとえば、LineStringの座標配列の中で、ある点と次の点がまったく同じ座標になっている場合です。このような連続重複は、線分の長さがゼロになる部分を生みます。見た目には大きな問題がなくても、距離計算、線の分割、方向判定、簡略化処理、面への変換などで不具合の原因になることがあります。連続する同一点が意図なく含まれている場合は、整理対象として検討できます。
一方で、線の中に同じ座標が離れた位置で再登場する場合は、単純な重複とは限りません。道路の折り返し、通路の往復、複雑な経路、自己交差に近い形状などでは、同じ地点を再び通るような座標配列になることがあります。これを機械的に削除すると、線の経路が変わってしまいます。線データでは、座標が重複しているかどうかだけでなく、その座標が配列のどの位置にあり、前後の座標とどのような関係になっているかを確認する必要があります。
面データでは、さらに慎重な確認が必要です。Polygonの外周や穴を構成するリングは、最初の座標と最後の座標が同じ値になることで閉じた輪として表現されます。これは不要な重複ではなく、面を成立させるために必要な構造です。ここを削除してしまうと、面として正しく扱えなくなる可能性があります。また、面には外周だけでなく、内側の穴を表す座標列が含まれる場合があります。外周と内側の輪を区別せずに座標を削除すると、穴の表現が崩れたり、面積計算や表示に影響が出たりします。
面で整理対象になりやすいのは、始点と終点の一致以外に、途中で同じ座標が連続している場合や、意図しない折り返しが含まれている場合です。たとえば、外周の途中に同じ座標が連続して二度入っていると、線データと同じく長さゼロの辺が発生します。また、非常に短い距離で行って戻るような座標列が含まれていると、面の境界が不安定になり、処理によっては形状エラーの原因になることがあります。こうした箇所は、前後の座標を見ながら、形状を壊さない範囲で整理する必要があります。
複数の面を扱う場合は、隣接する面が同じ境界座標を共有していることがあります。この場合、同じ座標が複数の地物に含まれていること自体は自然です。たとえば、隣り合う区画の境界線上の座標は、片方の面にも、もう片方の面にも現れることがあります。これをファイル全体で重複しているからといって一方から削除すると、片方の面だけが崩れることになります。重複座標の整理は、ファイル全体で一律に行うのではなく、点、線、面、さらに個々の地物単位で確認することが基本です。
GeoJSONの使い方に慣れていない段階では、重複座標の抽出結果だけを見ると、数が多くてすぐに削除したくなるかもしれません。しかし、形状の種類ごとに座標の意味は違います。点の重複、線の連続重複、面の閉じ座標、隣接面の共有座標は、それぞれ別のものです。この違いを意識するだけで、整理作業の安全性は大きく上がります。特に面データを扱うときは、閉じるための座標を残すこと、外周と内側の輪を混同しないこと、隣接地物の共有座標を不用意に消さないことを確認してから作業することが大切です。
確認3:属性・順序・座標系をそろえて整理する
重複座標の整理で見落としやすいのが、属性情報と座標配列の関係です。GeoJSONでは、形状を表す座標だけでなく、名称、番号、種別、管理区分、調査日、備考などの属性を持たせることができます。座標だけを見て重複を判断すると、属性の意味を無視してしまうことがあります。たとえば、同じ地点にある複数の設備を個別に管理している場合、座標は同じでも属性が異なるため、別の地物として残す必要があります。
点データで特に注意したいのは、同じ座標に複数の意味が重なっているケースです。現地では同じ場所に標識、境界標、設備、写真撮影地点、点検箇所などが重なることがあります。座標が同じだからといって一つにまとめると、どの対象を確認すべきか分からなくなる場合があります。重複を整理する前に、属性の中に対象を区別する情報があるかを確認します。管理番号や分類が異なる場合は、座標を統合するのではなく、表示や管理方法を工夫して区別するほうが安全です。
一方で、属性まで完全に同じレコードが複数存在する場合は、取り込みや結合による重複の可能性があります。この場合でも、削除前には元データの作成単位を確認したほうが安心です。複数回の調査結果を同じファイルにまとめている場合、同じ地点の同じ対象でも、調査回ごとの記録として意味を持つことがあります。属性に調査日や版番号がある場合は、それを見ずに重複削除を行うと、履歴情報を失うことがあります。
線や面では、座標の順序も重要です。同じ座標が含まれていても、並び順が変わると線の方向や面の形状が変わります。線データでは、始点から終点までの順序が現地の進行方向や管理上の方向を表していることがあります。面データでは、外周や内側の輪の順序が処理に影響する場合があります。GeoJSONのPolygonでは外周と穴の扱いがあり、外周と穴の向きも確認対象になります。ただし、古いデータや処理系によって扱いに差が出ることもあるため、向きだけを根拠に一括修正するのではなく、表示結果と用途を合わせて確認することが大切です。
また、座標系や座標の表し方が混在していないかも確認します。RFC 7946に沿ったGeoJSONでは、座標参照系はWGS 84を前提とし、位置の最初の2要素は経度、緯度の順で扱います。実務で扱う表形式や図面由来のデータでは、X、Yの並びや平面直角座標系の値と混同しやすい点に注意が必要です。緯度と経度を逆に扱うと、重複確認以前に位置そのものが大きくずれます。複数のデータを結合した場合は、一方は経度緯度、もう一方は別の座標前提のデータという状態になっていないか確認することが大切です。
実務では、GeoJSON形式の拡張や旧仕様の名残、内部処理用の独自運用により、ファイルの構造はGeoJSONに見えても座標の前提が標準的なGeoJSONと異なることがあります。そのため、受け取ったファイルを整理する前に、どの座標系で作られたデータなのか、変換済みなのか、表示用なのか、解析用なのかを確認します。座標値の桁や範囲が明らかに異なる場合は、重複整理に入る前に座標の前提をそろえる必要があります。
座標の丸め処理にも注意が必要です。重複を減らす目的で小数点以下の桁を丸めると、近接している別の点が同じ座標として扱われることがあります。表示用の軽量化であれば問題になりにくい場合もありますが、管理対象の判別や現地確認に使うデータでは、丸めによって本来の差が失われる可能性があります。丸めを行う場合は、どの桁で丸めるのか、その結果どの程度の位置差が生じる可能性があるのかを理解しておく必要があります。
属性と座標の対応を保つためには、整理前のデータを必ず残しておくことも重要です。作業中に削除や統合を行うと、後から判断を戻したくなったときに元の状態を確認できなくなることがあります。特に複数人で作業する場合や、納品前の確認を行う場合は、整理前、整理中、整理後のデータを区別し、どの段階で何を変更したかが分かるようにしておくと安心です。変更内容を記録しておけば、後で問い合わせがあったときにも説明しやすくなります。
重複座標の整理は、座標の数値だけを減らす作業ではありません。属性の意味、座標の順序、座標系の前提、丸め処理の影響を合わせて確認することで、初めて実務に使いやすいデータになります。特にGeoJSONを別形式へ変換する場合や、現地確認用のデータとして使う場合は、整理後に属性が欠けていないか、対象の分類が変わっていないか、座標の順序が崩れていないかを確認することが欠かせません。
確認4:整理後の表示確認と記録で手戻りを防ぐ
重複座標を整理した後は、必ず表示確認と記録を行います。数値上は正しく整理できたように見えても、地図上に表示すると形状が欠けていたり、線が不自然に飛んでいたり、面の穴や輪の扱いが想定と違って見えたりすることがあります。特に線や面の座標を編集した場合、見た目の確認は欠かせません。実務では、整理前と整理後を重ねて比較し、変化してよい部分と変化してはいけない部分を分けて確認することが大切です。
表示確認では、まず全体表示で大きな位置ずれや欠落がないかを確認します。次に、重複整理を行った箇所を拡大して、点の数、線のつながり、面の閉じ方を見ます。点データであれば、必要な対象が消えていないか、同じ位置の複数対象が意図どおり残っているかを確認します。線データであれば、途中で途切れていないか、折れ点の削除によって線形が変わりすぎていないかを確認します。面データであれば、外周が閉じているか、穴が消えていないか、隣接する面との境界に不自然な隙間や重なりがないかを確認します。
整理後のデータ量だけを成果として見ないことも大切です。座標数が減るとファイルが軽くなり、扱いやすくなることがあります。しかし、座標数が減ったこと自体が品質向上を意味するわけではありません。必要な折れ点まで消えていれば、形状の再現性は下がります。重複整理の目的は、無駄な座標を減らしながら、必要な形状と属性を保つことです。そのため、整理前後でどの程度変化したのかを確認し、用途に対して問題がないかを判断する必要があります。
記録として残しておきたい内容は、整理対象、整理基準、実施内容、確認結果です。たとえば、完全一致の連続座標を削除したのか、一定距離以内の近接点を統合したのか、属性が完全一致する点だけを削除したのか、面の閉じ座標は残したのか、といった判断条件を記録します。こうした記録がないと、後でデータを見た人が、なぜ座標が減っているのか、どのような基準で整理されたのかを判断できません。納品や社内共有を行う場合は、作業内容を簡潔に残すだけでも手戻りを減らせます。
また、整理後のGeoJSONを別の用途に回す前に、簡単な検査を行うことも有効です。ファイルとして読み込めるか、点、線、面の種類が想定どおりか、属性項目が欠けていないか、座標の並びが崩れていないか、想定外の空座標配列が残っていないかを確認します。重複座標を削除したつもりでも、結果として座標数が足りない線や面ができることがあります。たとえば、LineStringとして成立するための座標数が不足したり、Polygonのリングが閉じなくなったり、リングを構成する座標数が足りなくなったりすると、後工程で読み込みエラーや表示崩れが起こる可能性があります。
複数人で作業する場合は、整理後のデータだけを渡すのではなく、整理方針も共有することが重要です。同じ重複削除という言葉でも、人によって解釈が異なることがあります。ある人は完全一致だけを削除すると考え、別の人は近接点も統合すると考えるかもしれません。作業前に基準をそろえ、作業後に結果を確認する流れを作っておくと、担当者間の認識違いを減らせます。特に現地確認や図面作成に使うデータでは、わずかな判断差が後の作業に影響するため、言葉だけでなく記録で残すことが大切です。
整理後のデータは、原本とは別名で保存することをおすすめします。上書きしてしまうと、後で不具合に気づいたときに戻せなくなります。ファイル名には、整理済みであること、作業日、対象範囲、版の違いなどが分かる情報を入れておくと扱いやすくなります。ただし、ファイル名だけに頼るのではなく、作業メモや管理表などで変更内容を残すと、さらに安全です。GeoJSONはテキスト形式で扱えるため変更しやすい反面、気づかないうちに構造を壊してしまうこともあります。保存管理を丁寧に行うことが、ミスを減らす基本になります。
表示確認と記録は、作業の最後に余った時間で行うものではなく、重複座標整理の一部として組み込むべき工程です。どれだけ丁寧に抽出や削除を行っても、最終的に使う場面で問題が出れば、作業全体の信頼性が下がります。整理前後を比較し、地図上で見て、属性を確認し、作業内容を残す。この一連の確認を習慣にすることで、GeoJSONを実務で安定して使いやすくなります。
まとめ:重複座標の整理は削除作業ではなく品質管理です
GeoJSONの重複座標を整理するときは、単に同じ数値を探して削除するのではなく、データの意味を確認しながら進めることが大切です。同一点の重複なのか、近接点の混在なのかを見分けることから始め、点、線、面それぞれの構造上必要な座標を消さないように注意します。そのうえで、属性、順序、座標系、丸め処理の影響を確認し、整理後には表示確認と作業記録を残します。この流れを守ることで、GeoJSONを使った地図表示、図面照合、現地確認、管理データ作成のミスを減らしやすくなります。
重複座標は、見た目だけでは判断しにくい問題です。同じ位置に点が重なっているように見えても、実際には別の対象を表していることがあります。反対に、ほとんど同じ場所にある点が、取り込みや変換の影響でわずかにずれているだけの場合もあります。だからこそ、完全一致、近接、属性一致、形状構造という複数の観点で確認することが必要です。GeoJSONの使い方として、表示できるかどうかだけでなく、実務に使える品質になっているかを見る視点を持つことが重要です。
特に面データでは、リングの始点と終点が同じであることが正常な構造である点を忘れてはいけません。線データでは、連続する同一点は整理候補になりやすい一方、離れた位置で同じ座標が再登場する場合は経路上の意味を確認する必要があります。点データでは、同じ座標でも属性が異なれば別対象として残す判断が必要になることがあります。このように、形状の種類によって確認すべきポイントは変わります。
実務でGeoJSONを扱う場面では、データは一度作って終わりではありません。現地確認、修正、共有、変換、納品、再利用といった工程を通じて、何度も使われます。最初の段階で重複座標を整理し、作業基準を残しておけば、後工程での確認負担を減らせます。逆に、不要な重複や不明な編集履歴を残したまま進めると、どこでずれたのか分からなくなり、手戻りが大きくなります。重複座標の整理は、データを軽くするためだけでなく、後から説明できる状態にするための品質管理でもあります。
現地で取得した位置情報や写真情報とGeoJSONを組み合わせる場合は、データ整理の重要性がさらに高まります。位置の重複、属性の不足、撮影地点の混在、座標形式の違いがあると、確認作業に時間がかかります。現場での記録から地図データの活用までをつなげたい場合は、取得時点から座標と属性をそろえ、後で整理しやすい形にしておくことが効果的です。特定の製品やサービスに依存せず、データの作成条件、整理基準、確認記録をそろえることが、GeoJSONを安全に使うための基本になります。