postgresql中装gis插件_使用PostGIS_高级扩展插件使用_开发进阶_云原生数仓 AnalyticDB PostgreSQL - 阿里云...
通用操作
1)客户端连接实例
2)初次装载PostGIS扩展模块
创建扩展:
create extension postgis;
查看版本:
select postgis_version();
select postgis_full_version();
3)空间数据写入数据库表
首先创建带Geometry字段的表,SQL参考:
create table testg ( id int, geom geometry )
distributed by (id);
该SQL表示插入的空间数据不区分几何类型,几何类型包括Point / MultiPoint / Linestring / MultiLinestring / Polygon
/ MultiPolygon等。如果在创建表时已知Geometry类型和SRID,SQL参考:
create table test ( id int, geom geometry(point, 4326) )
distributed by (id);
Geometry类型指定Point,SRID为4326。SRID不指定默认为0。
有关SRID可参考 SRID
数据插入,SQL参考:
-- without srid
insert into testg values (1, ST_GeomFromText('point(116 39)'));
-- with srid
insert into test values (1, ST_GeomFromText('point(116 39)', 4326));
JDBC Java程序参考:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class PGJDBC {
public static void main(String args[]) {
Connection conn = null;
Statement stmt = null;
try{
Class.forName("org.postgresql.Driver");
//conn = DriverManager.getConnection("jdbc:postgresql://:3432/","", "");
conn.setAutoCommit(false);
stmt = conn.createStatement();
String sql = "INSERT INTO test VALUES (1001, ST_GeomFromText('point(116 39)', 4326) )";
stmt.executeUpdate(sql);
stmt.close();
conn.commit();
conn.close();
} catch (Exception e) {
System.err.println(e.getClass().getName() + " : " + e.getMessage());
System.exit(0);
}
System.out.println("insert successfully");
}
}
4)空间索引管理
创建空间索引
create index idx_test_geom on test using gist(geom);
idx_test_geom为自定义索引名,test为表名,geom为Geometry列名。
查看表有哪些索引
select * from pg_stat_user_indexes
where relname='test';
查看索引大小
select pg_indexes_size('idx_test_geom');
索引重构
reindex index idx_test_geom;
删除索引
drop index idx_test_geom;
5)典型空间查询SQL
矩形范围查询
-- without srid
select st_astext(geom) from testg
where ST_Contains(ST_MakeBox2D(ST_Point(116, 39),ST_Point(117, 40)), geom);
-- with srid
select st_astext(geom) from test
where ST_Contains(ST_SetSRID(ST_MakeBox2D(ST_Point(116, 39),ST_Point(117, 40)), 4326), geom);
ST_MakeBox2D算子生成一个Envelope。
几何缓冲范围查询
-- without srid
select st_astext(geom) from testg
where ST_DWithin(ST_GeomFromText('POINT(116 39)'), geom, 0.01);
-- with srid
select st_astext(geom) from test
where ST_DWithin(ST_GeomFromText('POINT(116 39)', 4326), geom, 0.01);
ST_DWithin用法参考:ST_DWithin
多边形相交判定(在内部或在边界上)
-- without srid
select st_astext(geom) from testg
where ST_Intersects(ST_GeomFromText('POLYGON((116 39, 116.1 39, 116.1 39.1, 116 39.1, 116 39))'), geom);
-- with srid
select st_astext(geom) from test
where ST_Intersects(ST_GeomFromText('POLYGON((116 39, 116.1 39, 116.1 39.1, 116 39.1, 116 39))', 4326), geom);
ST_*算子对大小写不敏感,更多用法可参考 PostGIS官方资料
说明
AnalyticDB PG 6.0不完全兼容PostGIS功能集,例如不支持 create extension postgis_topology,不推荐用Geography类型创建表(非要用,SRID默认为0或4326)。
postgresql中装gis插件_使用PostGIS_高级扩展插件使用_开发进阶_云原生数仓 AnalyticDB PostgreSQL - 阿里云...相关推荐
- 多啦咪图虫_浏览器插件图片批量下载工具扩展插件图片下载
下载地址: 多啦咪图虫_浏览器插件图片批量下载工具扩展插件图片下载-紫咖啡小站是一款内嵌到浏览器的工具:可以帮你方便地从任意网站上批量采集喜欢的图片并迅速完成筛选和保存 多啦咪图虫 图片批量下载工具支 ...
- python插件使用教程_Python常用扩展插件使用教程解析
扩展插件 我下载的本版自带 pip下载工具 cmd-pip 下载插件 pip install HTMLParser 如果提示版本问题,更新PIP 别用开始里面的CMD 使用管理者权限 请注意差别 输入 ...
- html按钮分享功能实现,一个分享按钮的插件使用介绍(可扩展,内附开发制作流程)...
前几天由于工作需要制作一个分享按钮,考虑到后续其他项目可能也会用到,于是就打算写成插件化,正好也给我自己的插件jquery.hooray增加一个新的功能,为了不浪费大家时间,我先把demo放出来,如果 ...
- 自定义notebook扩展插件_win10下jupyter notebook扩展插件安装失败
notebook win10下jupyter notebook安装扩展插件nbextensions时,一开始提示没有权限,"erron,13"有一个json文件无法访问,后来找到c ...
- postgresql中装gis插件_Postgresql 空间扩展需要Postgis插件
下载Postgis Postgresql扩展Postgis Windows: SQL Shell进入需要扩展Postgis的数据库. hngsmm=# CREATE EXTENSION postgis ...
- postgresql中装gis插件_PostgreSQL插件PostGIS安装
参考官网 http://postgis.net/ PostGis版本2.5.3 1.安装libxml2 # yum install libxml2 libxml2-devel 2.安装json-c # ...
- python高手之路第三版_《Python高手之路(第3版)》——1.3 版本编号-阿里云开发者社区...
本节书摘来自异步社区<Python高手之路(第3版)>一书中的第1章,第1.3节,作者[法]Julien Danjou,王飞龙 译,更多章节内容可以访问云栖社区"异步社区&quo ...
- php视频录制插件,Chrome浏览器录屏扩展插件
python的print函数的格式化输出 使用print函数的时候,可以像C一样格式化输出,同时还支持参数化输出 print('%s' % ("CooMark")) print(' ...
- 阿里巴巴400集python教程_递归的练习课程 | Python从入门到精通:高阶篇之十二-阿里云开发者社区...
上节课留了两个练习,这节课给大家讲一下,同时巩固一下递归的用法. 练习1.创建一个函数 power 来为任意数字做幂运算 n* * i 用数据10^5举例说明一下: # 10 ** 5 = 10 * ...
最新文章
- [译] React 路由和 React 组件的爱恨情仇
- Spring框架中的设计模式(一)
- 官宣:恭喜 ChaosBlade 项目进入 CNCF Sandbox
- GDCM:显示GDCM Dict的测试程序
- java lwjgl3_java-LWJGL 3鼠标移动
- hive连接mysql报错_hive远程模式初始化mysql报错
- dede tags.php漏洞,织梦dedecms安全漏洞之/include/common.inc.php漏洞解决办法
- python将红底证件照转成蓝底
- Lumion 9.0 建筑日景快速渲染实例教程
- 模仿百思不得姐项目笔记
- 终有一天,你没法成为曾经梦里的那个人了。
- 网络爬虫:乘风破浪的姐姐
- 响应式布局的个人博客
- 计算机学哪个编程好,达内机器人编程VS计算机编程,学哪个最好
- 自上而下语法分析器python
- 硬盘服务器 路由器哪个好用吗,NAS网络存储设备与路由器+硬盘之间有什么不同之处?...
- TCP/IP详解(卷1)勘误表
- IO回忆录之怎样过目不忘(BIO/NIO/AIO/Netty)2017版
- prometheus:原理和部署
- stm32使用SPI对W25Q64--8M字节FLASH的读写