PostgreSQLで緯度経度データを扱うためのチュートリアル

2024-04-02

PostgreSQLにおける緯度経度データ型

  1. double precision

    • 最も一般的なデータ型
    • 15桁の精度
    • 多くの場合、十分な精度
    • 多くのGIS関数との互換性
  2. geography

    • 地球楕円体に基づく座標系
    • 測地計算に最適
    • より正確な距離・面積計算
    • 比較的新しいデータ型
    • 一部のGIS関数との互換性がない可能性
  3. point

    • 2次元空間の点
    • 緯度経度以外にも使用可能
    • シンプルなデータ型

データ型選択のポイント

  • 精度
    • geography:より精密な計算が必要な場合
  • 機能
    • 測地計算:geographyが必要

データ型ごとの詳細

double precision

  • 浮動小数点数型
  • 8バイト
  • 緯度経度以外に、数値データ全般に使用可能

例:

CREATE TABLE locations (
  id SERIAL PRIMARY KEY,
  latitude DOUBLE PRECISION,
  longitude DOUBLE PRECISION
);

geography

  • 地理データ型
  • 距離・面積計算の精度が向上
CREATE TABLE locations (
  id SERIAL PRIMARY KEY,
  location geography(Point, 4326)
);
  • Point:点
  • 4326:WGS84座標系
CREATE TABLE locations (
  id SERIAL PRIMARY KEY,
  location point
);
  • point:シンプルなデータ型

データ型を選択する際は、精度、機能、互換性などを考慮する必要があります。




-- テーブル作成
CREATE TABLE locations (
  id SERIAL PRIMARY KEY,
  latitude DOUBLE PRECISION,
  longitude DOUBLE PRECISION
);

-- データ挿入
INSERT INTO locations (latitude, longitude) VALUES
  (45.5236, -122.6750),  -- ポートランド
  (37.7749, -122.4194),  -- サンフランシスコ
  (40.7127, -74.0059);  -- ニューヨーク

-- 距離計算
SELECT ST_Distance(
  ST_GeographyFromText('POINT(-122.6750 45.5236)'),
  ST_GeographyFromText('POINT(-74.0059 40.7127)')
);

-- 結果
-- 4,440.924 km

-- 最も近い場所の検索
SELECT * FROM locations
ORDER BY ST_Distance(location, ST_GeographyFromText('POINT(-122.6750 45.5236)'))
LIMIT 1;

-- 結果
-- id | latitude | longitude
-- -- | -- | --
-- 1 | 45.5236 | -122.6750
  • ST_Distance:2つの点間の距離を計算
  • ST_GeographyFromText:文字列から地理データ型を作成
  • ORDER BY:距離でソート

注意事項

  • サンプルコードはPostgreSQL 14.xを想定しています。
  • GIS関数はPostgreSQLのバージョンによって異なる場合があります。



緯度経度データを扱うその他の方法

PostGIS拡張モジュール

PostGISは、PostgreSQLに空間データ型と関数群を追加する拡張モジュールです。PostGISを使用すると、より高度な空間データ処理が可能になります。

ライブラリ

PHP、Python、Javaなど、さまざまな言語で空間データ処理を行うライブラリが提供されています。これらのライブラリを使用すると、PostgreSQLと連携して緯度経度データを扱うことができます。

Webサービス

Google Maps PlatformなどのWebサービスを使用すると、緯度経度データに基づいて地図や経路検索などの機能を提供することができます。

GISソフトウェア

QGIS、ArcGISなどのGISソフトウェアを使用すると、PostgreSQLと連携して緯度経度データを可視化したり、分析したりすることができます。

方法選択のポイント

  • 必要とする機能
  • 開発環境
  • 予算

  • 距離計算、面積計算などの基本的な機能のみ必要であれば、PostgreSQL標準のデータ型と関数で十分
  • 高度な空間データ処理が必要であれば、PostGISなどの拡張モジュールを使用
  • 地図表示などの機能が必要であれば、Webサービスを使用
  • GISソフトウェアは、データ可視化や分析に最適

PostgreSQLで緯度経度データを扱う方法は様々です。必要とする機能、開発環境、予算などを考慮して、最適な方法を選択することが重要です。


postgresql types latitude-longitude


PostgreSQL配列:=演算子、ANYキーワード、EXISTSキーワード、CONTAINS演算子、OVERLAPS`演算子

= 演算子最も簡単な方法は、= 演算子を使用して、配列内の要素と比較することです。例:このクエリは、interests 列に 音楽 と 映画 という値を含むすべてのユーザーを返します。ANY キーワードを使用して、配列内の任意の要素と比較することもできます。...


PostgreSQLでregclass型を使いこなす!テーブル作成から高度なテクニックまで

データベースオブジェクトの参照: テーブル、ビュー、関数をプログラム内で参照するために使用されます。データ型チェック: 関数引数や演算子で使用されるデータ型が有効かどうかを確認するために使用されます。デフォルト値の指定: 列のデフォルト値をシーケンス番号で指定するために使用されます。...


Windows環境におけるPostgreSQLのデフォルトパスワード

PostgreSQL は、オープンソースのオブジェクトリレーショナルデータベース管理システム (RDBMS) です。Windows 環境で PostgreSQL をインストールすると、デフォルトでいくつかのユーザーアカウントが作成されます。これらのアカウントにはそれぞれデフォルトパスワードが設定されていますが、セキュリティ上の理由から、インストール後にパスワードを変更することを強く推奨します。...


DockerコンテナからローカルホストのPostgreSQLデータベースに接続する方法

このチュートリアルでは、DockerコンテナからローカルホストのPostgreSQLデータベースに接続する方法について解説します。環境Ubuntu 20. 04Docker Desktop 20. 10. 11PostgreSQL 14手順...


SQL SQL SQL Amazon で見る



保存方法徹底比較!MySQLデータベースにおける緯度/経度とGEOMETRY型の関係

DOUBLE型数値型で、小数点以下の桁数を指定できます。緯度/経度の精度をある程度保ちたい場合に適しています。範囲は-1.7976931348623157E+308から1. 7976931348623157E+308までです。多くの場合、DOUBLE(9,6) (小数点以下6桁) が推奨されます。