马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1. 下载postgre gis镜像
2. 运行镜像
- docker run -p 15432:5432 -d -e POSTGRES_PASSWORD=Ab123456! postgis/postgis:12-3.4-alpine
复制代码
3. 使用gis
- # 进入容器,登录pg
- docker exec -it bash
- # 登录数据库
- psql -U postgres
- # 创建数据库
- CREATE DATABASE mygeotest;
- # 使用mygeotest数据库
- /c mygeotest
- # 创建gis扩展
- CREATE EXTENSION postgis;
- ###### 存储地点 #######################################################
- # 创建表,数据类型为Point
- CREATE TABLE places (
- id SERIAL PRIMARY KEY,
- name VARCHAR(100),
- geom GEOGRAPHY(Point, 4326) -- 使用 WGS 84 坐标系
- );
- # 插入数据
- INSERT INTO places (name, geom)
- VALUES ('My Location', ST_GeomFromText('POINT(30 10)', 4326));
- # 查询数据
- SELECT id, name, ST_AsText(geom) FROM places;
- ##### 存储路线 #######################################################
- # 创建表,数据类型为LINESTRING
- CREATE TABLE routes ( id SERIAL PRIMARY KEY, name VARCHAR(100), geom GEOMETRY(LINESTRING, 4326) );
- # 插入数据
- INSERT INTO routes (name, geom)
- VALUES ('Route 1', ST_GeomFromText('LINESTRING(30 10, 40 40, 50 50)', 4326));
- # 查询数据
- SELECT id, name, ST_AsText(geom) FROM routes;
- # 存储3维空间信息
- # 创建表,数据类型为POINTZ
- CREATE TABLE locations ( id SERIAL PRIMARY KEY, name VARCHAR(100), geom GEOMETRY(POINTZ, 4326) );
- # 插入数据
- INSERT INTO locations (name, geom)
- VALUES ('Location A', ST_GeomFromText('POINT(30 10 100)', 4326));
- # 查询数据
- SELECT id, name, ST_AsText(geom) FROM locations;
复制代码 4. 使用空间函数
PostGIS 提供了许多空间函数,例如计算面积、距离、缓冲区等。例如,计算两点之间的距离:
- SELECT ST_Distance( ST_GeomFromText('POINT(30 10)', 4326), ST_GeomFromText('POINT(30.1 10.1)', 4326) );
复制代码 5. 其他功能
- 空间索引:为了提高查询性能,可以为几何列创建空间索引:
- CREATE INDEX idx_places_geom ON places USING GIST(geom);
复制代码 - 支持多种数据类型:PostGIS 支持多种几何类型,包括点、线、多边形等,可以使用这些类型来表示复杂的地理对象。
6. 使用工具和库
你可以使用诸如 QGIS、GeoServer、Leaflet 等工具和库与 PostGIS 数据举行交互,举行可视化和进一步分析。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |