数据下载
数据下载地址:https://datav.aliyun.com/portal/school/atlas/area_selector
我这里下载全国所有城市的数据进行导入
下载安装GDAL
以下是安装 ogr2ogr(GDAL 工具集的一部分)的步骤,适用于 Windows、macOS 和 Linux 系统。
Windows系统安装GDAL
- 下载 GDAL:
- 访问 GISInternals 或 OSGeo4W 下载 GDAL 安装包。
- 选择适合你系统的版本(通常是 32 位或 64 位)。
- 安装:
- 下载后,运行安装程序,并按照提示完成安装。
- 确保选择安装命令行工具。
- 配置环境变量:
- 右键点击“此电脑”或“我的电脑”,选择“属性”。
- 点击“高级系统设置” > “环境变量”。
- 在“系统变量”中找到 Path,点击“编辑”。
- 添加 GDAL 的安装路径(例如:C:\Program Files\GDAL)。
- 验证安装:
- 打开命令提示符,输入以下命令:
ogr2ogr --version
如果显示版本信息,说明安装成功。
macOS系统安装GDAL
- 使用 Homebrew 安装:
- 如果没有安装 Homebrew,可以先在终端执行以下命令安装:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- 安装 GDAL:
brew install gdal
- 验证安装:
- 在终端输入:
ogr2ogr --version
确认安装成功。
Linux系统安装GDAL
- Debian/Ubuntu 系统:
- 打开终端,运行以下命令:
sudo apt update
sudo apt install gdal-bin
- Red Hat/Fedora 系统:
- 使用以下命令:
sudo dnf install gdal
- 验证安装:
- 在终端输入:
ogr2ogr --version
如果显示版本信息,说明安装成功。
我这里使用的是Ubuntu系统,按照成功会有以下提示:
在PostgreSql中创建表
GeoJSON 数据包含多个坐标并且表示一个多边形(Polygon),需要相应地调整表设计以支持存储 Polygon 类型的几何数据。
CREATE TABLE geo_data (
id SERIAL PRIMARY KEY, -- 唯一标识符
name VARCHAR(100), -- 地物名称
description TEXT, -- 描述(可选)
type VARCHAR(50), -- GeoJSON 类型(例如 "Feature")
geom GEOMETRY(Polygon, 4326), -- 空间数据,使用 Polygon 类型
properties JSONB, -- 任意属性,使用 JSONB 存储
created_at TIMESTAMP DEFAULT NOW(), -- 创建时间
updated_at TIMESTAMP DEFAULT NOW() -- 更新时间
);
字段说明
-
id: 唯一标识符,自动递增。
-
name: 地物名称。
-
description: 对地物的详细描述。
-
type: GeoJSON 对象的类型,通常是 “Feature”。
-
geom: 存储 Polygon 类型的地理数据,使用 PostGIS 的 GEOMETRY 类型,并指定坐标系(这里使用 WGS 84,EPSG:4326)。
-
properties: 使用 JSONB 类型存储与地物相关的其他任意属性。
-
created_at: 记录创建时间。
-
updated_at: 记录最后更新时间。
索引
为了提高对空间数据的查询性能,可以创建空间索引:
CREATE INDEX idx_geom ON geo_data USING GIST (geom);
GeoJSON 示例
GeoJSON 数据可能类似于以下结构:
{
"type": "Feature",
"properties": {
"name": "Example Polygon",
"description": "A sample polygon feature."
},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[102.0, 0.0],
[103.0, 0.0],
[103.0, 1.0],
[102.0, 1.0],
[102.0, 0.0]
]
]
}
}
ogr2ogr导入数据到表中
ogr2ogr -f "PostgreSQL" PG:"host=localhost dbname=your_db user=your_user password=your_password" your_data.geojson -nln geo_data -overwrite
-
your_db:你的数据库名。
-
your_user:数据库用户名。
-
your_password:数据库密码。
-
your_data.geojson:你的 GeoJSON 文件名。
-
geo_data:目标表名。
导入完成后即可在表中查询到