1 创建postgis数据库

\c demo;    -- 切换到目标数据库
create extension postgis;   -- 启用postgis(包括raster),pg版本10.1,postgis版本2.4create table cities (id int4, city varchar(50));  -- 创建表
select AddGeometryColumn('cities', 'geom_pt', 4326, 'point', 2);   -- 添加geometry列insert into cities (id,city,geom_pt) values(1, 'beijing', st_GeomFromText('point(116 40)', 4326));
select st_AsText(geom_pt) from cities;

2 常用函数

  • ST_AsText ST_AsGeojson ST_GeomFromText ST_GeomFromGeojson
let strGeojson = '{"type": "LineString", "coordinates": [[115, 39], [116, 39], [116, 40], [115, 39]]}'let strText = 'LineString(115 39, 116 39, 116 40, 115 39)'select ST_AsText(ST_GeomFromGeojson(strGeojson)) -- strText
select ST_AsGeojson(ST_GeomFromText(strText))       -- strGeojson
  • ST_PointFromText ST_LineFromText ST_PolyFromText
-- 点线面的wkt写法
let pt = 'point(115.39)'
let ls = 'linestring(115 39, 116 39, 116 40, 115 39)'
let pg = 'polygon((115 39, 116 39, 116 40, 115 39))'
  • ST_MakePoint ST_MakeLine ST_MakePolygon
  • ST_Point ST_Polygon
-- st_point(x, y)遵循OGC标准,是st_makepoint的OGC别名,st_makepoint(x, y, z?, m?)不遵循OGC标准
-- 结果相同
ST_Point(116, 40)
ST_MakePoint(116, 40)// 转为geography,结果相同
SELECT ST_Point(116, 40)::geography;
SELECT ST_SetSRID(ST_Point(116, 40),4326)::geography;
SELECT CAST(ST_SetSRID(ST_Point(116, 40),4326) As geography);
  • 计算面积st_area
-- 平面/球面/椭球面的面积
select st_area(geom), st_area(geog), st_area(geog, false) from counties where name = '阿荣旗';-- geometry和geography转换,前2相等,后3相等
select st_area(geom), st(geog :: geometry), st_area(geog), st_area(geom :: geography), st_area(st_setsrid(geom, 4326) :: geography) from counties where name = '阿荣旗';
  • 空间关系计算(Geometry Processing)
-- 包含关系,ST_Contains(geomA, geomB),注意不支持geog的运算
ST_Contains(geom, ST_Point(113.5, 33.6))-- 相交,支持geog
ST_Intersection(geom, ST_MakeBox2D(ST_Point(113, 30),ST_Point(114, 40)))

3 疑问

  • Which data store should I use geometry or geography
-- 在线帮助
http://postgis.net/docs/manual-2.4/PostGIS_FAQ.html#idm1062-- 本地帮助, Chapter 3. PostGIS Frequently Asked Questions
-- 3.7 I'm all confused. Which data store should I use geometry or geography?-- geom和geog转换成wkt和geojson后输出相同
select ST_AsText(geom), ST_AsText(geog),ST_AsGeojson(geom), ST_AsGeojson(geog) from counties where name = '阿荣旗';

参考:
http://postgis.net/docs/manual-2.4/
http://live.osgeo.org/zh/quickstart/postgis_quickstart.html

postgis基本用法相关推荐

  1. PostgreSQL+PostGIS的使用

    一. PostgreSQL与PostGIS的关系 PostgreSQL 是世界上技术最先进的开源数据库,其前身是1977年一个源于Berkeley名为Ingres的非关系型数据库,其项目领导人为Mic ...

  2. geotrellis使用(三十)使用geotrellis读取PostGIS空间数据

    前言 最近事情很多,各种你想不到的事情--such as singing and dancing--再加上最近又研究docker上瘾,所以geotrellis看上去似乎没有关注,其实我一直在脑中思考着 ...

  3. PostgreSQL PostGIS 的5种空间距离排序(knn)算法

    摘要: 标签 PostgreSQL , PostGIS , operator , ops , knn 背景 PostgreSQL GiST索引支持排序接口,可以支撑空间.标准.数组.文本向量.文本等类 ...

  4. 震惊,PostGIS还可以这样用!!!

    摘要:PostGIS为PostgreSQL提供了空间数据库分析能力,是目前业界主流的地理数据库之一,提供如下空间信息服务功能:空间对象.空间索引.空间操作函数和空间操作符等.在GaussDB 中,目前 ...

  5. Python和PostgreSQL,PostGIS,空间数据管理

    此文倒叙整理,从下-上为整理顺序 常用空间sql命令 text AddGeometryColumn(varchar table_name, varchar column_name, integer s ...

  6. PostgreSQL使用PostGIS插件,存储GIS数据

    PostGIS是PostgreSQL对象关系数据库的空间数据库扩展程序.它增加了对地理对象的支持,允许在SQL中运行位置查询. [About PostGIS](About PostGIS | Post ...

  7. PostGIS中的常用函数

    网上看到的最全最详细的PostGIS空间函数整理,搬运过来方便以后查看 PostGreSQL(五)PostGIS-常用函数 - huiyii - 博客园 (cnblogs.com)https://ww ...

  8. 大数据系列5:地理信息系统PostGis

    0. Gis基本概念 数据结构:GIS矢量数据由坐标构成,一个GIS特征可以是点.线.多边形--:栅格数据是影像数据,在地理数据库表示为一组数字矩阵.栅格数据的分辨率表示每个点对应的地理位置距离. 索 ...

  9. 用Postgis算最短路径(在任意位置选择起点终点)

    1.前言 阅读本文需要知道什么是shapfile,什么是路径分析,什么是GIS.相比Arcgis的路径分析功能,本文介绍的方法稍微复杂,需要注意的细节更多,但却是完全免费的.PostGis+QGIS+ ...

最新文章

  1. android界面数据存储,Android应用开发基础之数据存储和界面展现(二)
  2. tomcat屏蔽ip
  3. ab压力测试_CentOS安装压力测试工具ApacheBench(ab)
  4. 信息竞赛进阶指南--归并排序求逆序对
  5. 何时以及如何使用ThreadLocal
  6. 循环数组对象 php,PHP循环遍历stdClass对象的数组
  7. HTML解析没有详情页url,爬虫找不到详情页URL的参数
  8. (十二)通过Opencv blobFromImage实现数据标准化
  9. 【空间分析】4 探索性分析
  10. 使用javamail的一些问题总结
  11. 夜神模拟器连接手柄无反应_夜神模拟器怎么连接手柄?夜神模拟器连接手柄具体操作...
  12. Unity3D之太空大战一
  13. C++:这天星期几?
  14. 搜狗搜索立知问答合作说明
  15. R星安装不完全无法载入social club(错误码:1)解决办法
  16. java使用自定义HTML模板发送邮件——记录开发篇1
  17. Flutter-防京东商城项目-提交订单、去支付页面制作-44
  18. 在校大学生学业预警系统java_关于学业预警系统上线使用的通知
  19. DLNA介绍(包含UPnP,2011/6/20 更新)
  20. 单例模式-多线程单例模式

热门文章

  1. 输出所有的水仙花数(java语言编写)
  2. Win10你要以何方式打开此网站 确定不能点解决方法
  3. 零基础想学好C语言编程,首先要掌握的是正确的学习思路!
  4. windows下 python 使用 pip 安装TA-Lib报错的原因及解决方法
  5. C语言实现当前时间的前后多少秒的时间计算
  6. dpdk中文-DPDK学习路线图
  7. ad中pcb双面板怎么设置_PCB双面板的画法及布线技巧
  8. 什么是预言机(oracle)
  9. 原生JS实现的滚动抽奖工具(可设置每个奖品概率、滚动速度、滚动圈数)
  10. 基于IC617下Layout XL的使用