当前位置:网站首页>PostGIS learning
PostGIS learning
2022-07-07 23:48:00 【Xiao He and Mufeng】
It is estimated that they will be engaged in gis Related work ,postgis As a powerful gis The database still needs to be well studied . Although geometric data storage can be realized by any type of database , But it's just storage , Subsequent coordinate conversion 、 Spatial analysis and other functions should be realized one by one , It's bound to be very troublesome ,postgis These functions have been integrated , Record the learning process here , For later review .
One 、 install postgis
postgis yes postgresql An extension of the database , So install postgis You have to install postgresql( Download this ), You can download the corresponding installation package according to your own system , The specific installation process is not explained , There are many tutorials online .
If your computer is equipped with docker, It is recommended to use postgis Of docker Mirror image , It can save the trouble of installation , Deployment and migration management are also more convenient .
docker pull postgis/postgis
function postgis Containers , Set container name your_container_name and postgres Access code for your_postgres_passwd
docker run -d --name your_container_name -P -p 5432:5432 -e POSTGRES_PASSWORD=your_postgres_passwd postgis/postgis
Want to use later postgis database , Just start this container .
Two 、 Create database
- establish
postgresdatabasetest, For learning
create database test
- Get into
testdatabase , And increasepostgisExpand
create extension postgis
- see
postgisedition , If it is displayed by the version number, it indicatespostgisDatabase created successfully
select postgis_full_version()
3、 ... and 、 Geometric data reading and writing
3.1 Test data preparation
choice WGS84 In a coordinate system 1 A little bit (120, 40, 500), Use EPSG The website gets the coordinates under the other two coordinate systems by coordinate conversion , Then use these two coordinates for reading and writing tests .EPSG:3857 WGS 84 / Pseudo-Mercator The coordinates in the coordinate system are (13358338.90, 4865942.28, 500),EPSG:4586 New Beijing / Gauss-Kruger CM 117E The coordinates in the coordinate system are (756206.42, 4433921.00, 500)
3.2 Geometric type
3.2.1 OGC Format
postgis Database support OGC Standard spatial geometry data types , Its format is divided into WKT(Well-Known Text) and WKB(Well-Known Binary) Two kinds of , The former is text format , The latter is in binary format ,WKT The geometric type data in the format is shown below ( give an example , Not listed completely ), The coordinates of the same point are Space Separate , Coordinates of different points are comma Separate :POINT(0 0) Two dimensional points POINTZ(0 0 0) 3D point POINTZM(0 0 0 0) Three dimensional points with attribute values LINESTRING(0 0, 1 1, 1 2) 2D line POLYGON((0 0, 4 0, 4 4, 0 4, 0 0),(1 1, 2 1, 2 2, 1 2, 1 1)) Two dimensional polygon
3.2.2 postgis Format
postgis Yes OGC Has been extended , It is divided into EWKT and EWKB Two kinds of , These two types are mainly simplified in the representation of data , Such as WKT Express POINT、POINTZ、POINTM、POINTZM Four forms ,EWKT only POINT and POINTM Two forms ,EWKT Of POINT It can represent two-dimensional or three-dimensional , Depends on the number of coordinates filled , and WKT The two and three dimensions of are based on whether the type name contains Z Distinguishable , The basic comparison is as follows
| type | WKT | EWKT |
|---|---|---|
| Two dimensional points | POINT(0 0) | POINT(0 0) |
| 3D point | POINTZ(0 0 0) | POINT(0 0 0) |
| Two dimensional points with attributes | POINTM(0 0 0) | POINTM(0 0 0) |
| 3D points with attributes | POINTZM(0 0 0 0) | POINTM(0 0 0 0) |
3.3 geometry keyword
postgis The database can create data tables with geometry type fields , The keyword is geometry, This field can store geometric type data such as points, lines and planes, as well as coordinate system parameters srid( It's actually EPSG The number of ). When the table is created , This field can be without parameters , At this time, fields can store different types of geometric data and coordinate system parameters ; You can also bring parameters , The format is (geomType, srid),geomType Represents the geometric data type ,srid Represents the projection parameter , For example, define a coordinate system as WGS84 Mercator projection The corresponding description of the 3D point type field of is (pointz,3857)( The type used when creating tables OGC The format of ).
3.4 Data table reading and writing of fixed geometry type and coordinate system parameters
If the data stored in the table is of the same coordinate system and geometric type , You can specify , In this way, there is no need to set the coordinate system during subsequent data insertion . Be careful : Tables with coordinate systems and types set will report errors when inserting other types of coordinate systems and geometric types .
3.4.1 Create a projection coordinate system of 3857 Geometric point table of
Table, test,id Is a self-increment field ,name Is the geometric data name ,geom For geometric data
create table test (id serial PRIMARY KEY, name VARCHAR(50), geom geometry(pointz, 3857))
3.4.2 Insert a record ,WKT Format input geom
st_geomfromtext Means to convert a string into WKT Format
insert into test (name, geom) values('point1', st_geomfromtext('pointz(13358338.90 4865942.28 500)'))
3.4.3 Insert a record ,EWKT Format input geom
st_geomfromewkt Means to convert a string into EWKT Format , It can be seen that the same data is WKT and EWKT The two different parsing formats are consistent after import .
insert into test (name, geom) values('point1', st_geomfromewkt('point(13358338.90 4865942.28 500)'))
3.4.4 Query log ,WKT Format output geom
st_astext It means converting geometric data into WKT Format , You can see the result with POINTZ, The coordinates are consistent with the original
select name, st_astext(geom) from test
3.4.5 Query log ,EWKT Format output geom
st_asewkt It means converting geometric data into EWKT Format , You can see the result with SRID and POINT, The coordinates are consistent with the original
select name, st_asewkt(geom) from test
3.4.6 Query log ,GeoJSON Format output geom
st_asgeojson It means converting geometric data into JSON Format , You can see that the result is in the format of key value pairs , Compared with the first two values, it will be more convenient
select name, st_asgeojson(geom) from test
3.4.7 Query log , take geom The switch to WGS84 Coordinate system , And WKT Format output
st_transform Indicates that the geometric data is transferred to the target coordinate system , The parameter format is ( Geometric data , Target coordinate system ), You can see the output coordinates and the coordinates before the conversion WGS84 The coordinates are the same ( decimal 8 There is error after bit )
select name, st_astext(st_transform(geom, 4326)) from test
3.4.8 Query log , take geom The switch to WGS84 Coordinate system , And EWKT Format output
select name, st_asewkt(st_transform(geom, 4326)) from test
3.4.9 Query log , take geom The switch to WGS84 Coordinate system , And JSON Format output
Comprehensive category , be based on st_transform and st_asgeojson It's easy to get WGS84 Longitude and latitude coordinates in the coordinate system , Convenient for subsequent visual rendering .
select name, st_asgeojson(st_transform(geom, 4326)) from test
3.5 Data table reading and writing without geometry type and coordinate system parameters
If the data type or coordinate system stored in the data table is not fixed , You can not specify , Specify... When inserting data .
3.5.1 Create table
geometry Parameters need not be set
create table test2 (id serial PRIMARY KEY, name VARCHAR(50), geom geometry)
3.5.2 Insert a record ,WKT Format input geom
The coordinate system used is 3857 Insert a point with the coordinates of
insert into test2 (name, geom) values ('point1', st_geomfromewkt('srid=3857;point(13358338.90 4865942.28 500)'))
3.5.3 Insert a record ,EWKT Format input geom
The coordinate system used is 4586 Insert a line with the coordinates of , Point of line xy identical ,z Different , It can be seen that different geometry types and coordinate systems can be successfully imported
insert into test2 (name, geom) values ('linestring1', st_geomfromewkt('srid=4586;linestring(756206.42 4433921.00 500, 756206.42 4433921.00 600)'))
3.5.4 Query log ,WKT Format output geom
select name, st_astext(geom) from test2
3.5.5 Query log ,EWKT Format output geom
select name, st_asewkt(geom) from test2
3.5.6 Query log ,GeoJSON Format output geom
select name, st_asgeojson(geom) from test2

3.5.7 Query log , take geom The switch to WGS84 Coordinate system , And WKT Format output
select name, st_astext(st_transform(geom, 4326)) from test2
3.5.8 Query log , take geom The switch to WGS84 Coordinate system , And EWKT Format output
select name, st_asewkt(st_transform(geom, 4326)) from test2
3.5.9 Query log , take geom The switch to WGS84 Coordinate system , And JSON Format output
select name, st_asgeojson(st_transform(geom, 4326)) from test2
Four 、 Spatial analysis of geometric data
To be updated
边栏推荐
- HDU - 1260 tickets (linear DP)
- Rock-paper-scissors
- Chisel tutorial - 02 Chisel environment configuration and implementation and testing of the first chisel module
- Orthodontic precautions (continuously updated)
- webflux - webclient Connect reset by peer Error
- SQL 使用in关键字查询多个字段
- SAP memory parameter tuning process
- 2022.7.7-----leetcode. six hundred and forty-eight
- C # exchange number, judge to pass the exam
- 光流传感器初步测试:GL9306
猜你喜欢

平衡二叉树【AVL树】——插入、删除

蓝桥ROS中使用fishros一键安装

Pycharm essential plug-in, change the background (self use, continuous update) | CSDN creation punch in

Class C design questions

Get started with mongodb

C cat and dog

Svn relocation

Take you hand in hand to build Eureka server with idea

Benchmarking Detection Transfer Learning with Vision Transformers(2021-11)

Traduction gratuite en un clic de plus de 300 pages de documents PDF
随机推荐
SAP HR labor contract information 0016
Wechat applet development beginner 1
Apng2gif solutions to various problems
Installing gradle
Pigsty: out of the box database distribution
关于CH32库函数与STM32库函数的区别
Is it safe to buy funds online?
Dataguard 主备清理归档设置
Class C design questions
机器人(自动化)等专业课程创新的结果
HDU - 1260 Tickets(线性DP)
MySQL架构
Restricted linear table
数据分析系列 之3σ规则/依据拉依达准则来剔除异常值
MP4文件格式解析之结合实例分析
P2141 [noip2014 popularization group] abacus mental arithmetic test
P5594 [xr-4] simulation match
C method question 1
Idea automatically generates serialVersionUID
codeforces每日5题(均1500)-第八天