`
Allen_Oscar
  • 浏览: 24612 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

postgis学习笔记

 
阅读更多

1..shp格式数据代入数据库postgis :

shp2pgsql -W"GBK" f:\XianCh_point.shp ccvv >f:\ccvv.sql

psql -d postgis -f f:\ccvv.sql postgres

表名称:ccvv

数据库名字:postgis

角色名:postgres

2.创建表空间数据库用户在pgAdmin中可设置。

1create tablespace dhsdpgis_tp owner postgres location ‘d:\’

2crate database dhsdpgis_db owner postgres TABLESPACE dhsdpgis_tp;

3createuser -U postgres - P Allen

3进入数据库 cd D:\PostgreSQL\9.2\bin

D:\PostgreSQL\9.2\bin psql –d postgis postgres

创建空间表

CREATE TABLE ROADS ( ID int4, ROAD_NAME varchar(25), geom. geometry(LINESTRING,4326) );

1.插入一列(线)

ALTER TABLE roads ADD COLUMN geom2 geometry(LINESTRINGZ,4326);

SELECT AddGeometryColumn( 'roads', 'geom', 423, 'LINESTRING', 2);

2.('MULTIPOLYGON')

CREATE TABLE parks (
 park_id INTEGER,
 park_name VARCHAR,
 park_date DATE,
 park_type VARCHAR
);
SELECT AddGeometryColumn(‘模式’,'parks', 'park_geom', 128, 'MULTIPOLYGON', 2 );

3. (GEOMETRY)

CREATE TABLE roads (
 road_id INTEGER,
 road_name VARCHAR
);
SELECT AddGeometryColumn( 'roads', 'roads_geom', 0, 'GEOMETRY', 3 );

4

CREATE TABLE pois_ny(gid SERIAL PRIMARY KEY
 , poi_name text, cat varchar(20)
 , geom geometry(POINT,4326) );
SELECT AddGeometryColumn('pois_ny', 'geom_2160', 2160, 'POINT', 2, false);

添加点

String sql = "INSERT INTO business(名称, geom) VALUES('cccXXXXcc集团', 'POINT("+x+" "+y+")')";

修改点

String sql = "update "+table+" set 名称='东和盛达2' , geom =ST_GeomFromText('POINT("+x+" "+y+")') where gid = 4";

geometry ST_GeomFromText(text WKT);

geometry ST_GeomFromText(text WKT, integer srid);

ST_AsEWKT(geom)包含SRID ST_AsText(GEOM)不包含

5

ST_GeomFromText('POINT(22 22)')将其转化为 geometry 类似010100000054B7AB482BB65D40D40D4D6BCEB64240

ST_AsText 转化为 类似POINT(22 22)

获取两个面 之间最短距离的点

ST_ClosestPointgeometry g1, geometry g2g2g1最近的点 该点在g1

SELECT ST_AsText(

ST_ClosestPoint(ST_GeomFromText(’ POLYGON((175 150, 20 40, 50 60, 125 100, 175 150))’),

ST_Buffer(ST_GeomFromText(’POINT(110 170)’), 20)))

SELECT ST_AsText(ST_ClosestPoint(pt,line)

) AS cp_pt_line, ST_AsText(ST_ClosestPoint(line,pt )) As cp_line_pt FROM (SELECT 'POINT(100 100)'::geometry As pt, 'LINESTRING (20 80, 98 190, 110 180, 50 75 )'::geometry As line) As foo ;

结果:POINT(100 100) | POINT(73.0769230769231 115.384615384615)

或者

SELECT ST_AsText(ST_ClosestPoint(ST_GeomFromText('LINESTRING (20 80, 98 190, 110 180, 50 75 )'),ST_GeomFromText('POINT(100 100)') ) ) AS cp_pt_line FROM business;

结果:"POINT(73.0769230769231 115.384615384615)"

ST_Contains(A,B) BA

ST_Within(A,B) A B

判断A是否被B包含 ST_Within(geometry A, geometry B)

判断A是否包含B ST_Contains(geometry A, geometry B)
判断A是否覆盖 B ST_Covers(geometry A, geometry B)


SELECT ST_AsText(

ST_ShortestLine(’POINT(100 100) ’::geometry,’LINESTRING (20 80, 98 -190, 110 180, 50 75 )’::geometry)) As sline;sline

-----------------

LINESTRING(100 100,73.0769230769231 -

115.384615384615)

SELECT ST_AsText(ST_ShortestLine(ST_GeomFromText(’ POLYGON((175 150, 20 40, 50 60, 125 100, 175150))’),ST_Buffer( -ST_GeomFromText(’POINT(110 170)’), 20))) As slinewkt;

LINESTRING(140.752120669087 125.695053378061,121.111404660392 153.370607753949)

ST_DWithin(

ST_Transform(ST_GeomFromText('POINT(118.84839183778 37.4231344123688)',4326),2383),

ST_Transform(ST_GeomFromText('MULTIPOLYGON (((118.853945599439 37.4229670850174, 118.8658 37.4225250432923, 118.853278523793 37.4326615750288, 118.853476307826 37.4231018594778, 118.853945599439 37.4229670850174)))',4326),2383),

100

多边形查询 多边形内的所有点

SELECT gid, "名称", geom

FROM business where ST_Within(business.geom,

ST_GeomFromText('MULTIPOLYGON (((118.853945599439 37.4229670850174, 118.8658 37.4225250432923, 118.853278523793 37.4326615750288, 118.853476307826 37.4231018594778, 118.853945599439 37.4229670850174)))')

) ;

缓冲区查询:

String sql = "select *,ST_AsText(ST_Buffer(ST_Transform(ST_GeomFromText('POINT(118.8665,37.420134)',4236),4236),2500)) as BufferFeatures from business where ST_DWithin(ST_Transform(ST_SetSRID(geom, 4236),2383),ST_Transform(ST_GeomFromText('POINT(118.8665,37.420134)',4236),4236),2500) ";

空间查询:

1.圆查:

String sql = "select *,gid,ST_GeometryType(geom),GeometryType(geom) ,ST_Area(ST_Transform(ST_GeomFromText('MULTIPOLYGON((("+geometry+")))',4236),2383)) from "+layerName+" limit 1 ";

2.拉框查询:

String sql = "select *,ST_AsText(geom) as geometry,GeometryType(geom) as geometryType from "+layerName+" where ST_Within(geom,ST_GeomFromText('MULTIPOLYGON((("+geometry+")))'))";

分享到:
评论

相关推荐

    Postgis学习笔记.doc

    PostGIS学习笔记 PostGIS 是一个基于 PostgreSQL 的空间数据库扩展,可以处理空间数据和进行空间查询。下面是 PostGIS 学习笔记的要点总结: 一、PostGIS 的基本概念 PostGIS 是一个开源的空间数据库扩展,基于 ...

    kisstome88-PostGIS学习笔记.pdf

    根据提供的文件信息,我们可以归纳出一系列关于PostGIS...以上就是基于提供的文件内容整理出的主要知识点,涵盖了PostGIS中常见的SQL函数和操作,对于学习和使用PostGIS进行地理空间数据管理和分析具有重要的参考价值。

    Postgis-学习 入门 教程 教学 手册-Postgresql

    PostGIS简介、安装、新建空间数据库、简单SQL语句查询练习、几何数据操作和练习、空间关系操作与练习、空间链接与练习、投影数据与练习、空间索引与练习…… 还包括PostgreSQL for spatial的配置,验证,postgis函数...

    kartoza-docker-postgis,带postgis的postgresql13版本的docker镜像

    kartoza-docker-postgis,带postgis的postgresql13版本的docker镜像。 可直接通过docker导入镜像命令导入。 一个简单的 Docker 容器,用于运行 PostGIS 访问Docker Hub 的页面:...

    PostGIS安装使用指导1

    PostGIS 安装使用指导 PostGIS 概述 ----------- PostGIS 是 PostgreSQL 的空间数据库扩展,提供空间信息服务功能,包括空间对象、空间索引、空间操作函数和空间操作符。PostGIS 完全遵循 OpenGIS 规范,提供了...

    postgis中文说明书.pdf

    PostGIS最早作为一种空间数据库技术研究项目,由Refractions Research Inc所开发。Refractions公司是一个GIS 和数据库咨询公司,他们在Victoria, British Columbia, Canada均有业务开展,专注于数据集成和定制化软件...

    postgis25.zip

    PostGIS 是一个强大的开源扩展,它为 PostgreSQL 数据库系统提供了空间和地理对象的支持。这个“postgis25.zip”文件包含的是 PostGIS 2.5 版本的安装组件,适用于 PostgreSQL 12。PostGIS 的主要功能是将地理位置...

    PostGIS 3.0.1及官方文档

    通过学习文档,你可以了解如何创建空间表、执行空间查询、进行地理编码和反地理编码,以及如何利用拓扑和3D几何对象。 在SQL层面,PostGIS扩展了标准的SQL语法,引入了一系列空间函数,例如ST_GeomFromText用于创建...

    PostGIS 3.0.1完整依赖

    PostGIS 3.0.1 是一个扩展了 PostgreSQL 数据库系统的空间数据库系统,它提供了强大的地理数据处理和分析功能。这个压缩包包含了 PostGIS 3.0.1 的相关依赖源码包,这些依赖对于正确编译和安装 PostGIS 至关重要。...

    postgis学习资料

    ### PostGIS学习资料详解 #### 一、引言与概览 PostGIS是PostgreSQL数据库系统的一个扩展,它允许在数据库中存储地理信息系统(GIS)对象。这一强大的工具集不仅支持基于GiST(Generalized Search Tree)的R-Tree...

    postgis-2.2.0dev 手册中文版(伏念译)_postgis_

    这个“postgis-2.2.0dev 手册中文版(伏念译)”是 PostGIS 2.2.0 开发版本的中文指南,由伏念翻译,对于学习和使用 PostGIS 的中文用户来说是一份宝贵的资源。 在手册中,你将找到关于 PostGIS 的核心概念和功能的...

    postgis-3.1.2.tar.gz

    PostGIS是 PostgreSQL 数据库系统的一个扩展,专门用于处理地理空间数据。这个压缩包"postgis-3.1.2.tar.gz"包含了PostGIS 3.1.2版本的所有组件,这是一个用于存储、查询、分析和操作地理信息的强大工具。在Linux...

    postgis-3.0.1forpg12.zip

    PostGIS 是一个开源的空间数据库扩展,它为 PostgreSQL 数据库管理系统添加了对地理对象的支持。PostgreSQL 12 是 PostgreSQL 的一个重要版本,提供了许多性能优化和新特性。在本压缩包 "postgis-3.0.1forpg12.zip" ...

    postgis-2.5.2.zip

    PostGIS是开源地理数据库扩展,它为开源数据库系统PostgreSQL提供了强大的空间和地理数据支持。...通过深入学习这份文档和实践其中的教程,开发者可以充分利用PostGIS的强大功能,实现高效、精确的空间数据管理和分析。

    postgis jar包

    PostGIS是一种开源的空间数据库扩展,它为 PostgreSQL 数据库系统提供了强大的地理对象支持。这个"postgis jar包"指的是PostGIS的Java数据库连接器(JDBC)驱动程序,它允许Java应用程序通过JDBC接口与PostGIS数据库...

    postgis-2.5.5.tar.gz

    PostGIS是 PostgreSQL 数据库系统的一个扩展,它为地理对象提供了全面的存储、查询和分析功能。这个"postgis-2.5.5.tar.gz"压缩包包含的是PostGIS 2.5.5版本的源代码,适用于那些希望在Linux环境下安装和自定义...

    PostGIS教程二十:索引集群_postgis_PostGIS索引集群_

    在PostGIS中,索引集群是一种优化数据库查询性能的技术,尤其对于地理空间数据处理来说,其重要性不言而喻。本教程将深入探讨PostGIS中的索引集群及其对提高数据访问速度的影响。 首先,理解索引的概念是关键。在...

    postgis中文手册(3.0)

    在“PostGIS 中文手册(3.0)”中,你将学习到: 1. **安装与配置**:包括如何在你的系统上安装 PostgreSQL 和 PostGIS,以及如何设置数据库环境,确保其能正确处理空间数据。 2. **空间数据类型**:详细讲解 ...

    postgis-3.0.0.tar.gz

    PostGIS是 PostgreSQL 数据库系统的一个扩展,它为数据库添加了空间和地理对象的支持。PostGIS 3.0.0 版本是这个扩展的重要里程碑,提供了更多功能和性能改进。在本文中,我们将深入探讨PostGIS 3.0.0在GIS领域的...

Global site tag (gtag.js) - Google Analytics