arcpy實現空間查詢 POSTGIS中的空間查詢

2021-10-20 11:02:23 字數 4449 閱讀 6734

management functions

1,基本操作函式

addgeometrycolumn(, , , , , )

給乙個已存在屬性資料表增加乙個幾何字段(geomtry column)。schema_name 指表的模式的名字,srid 必須是乙個整數指對應於 spatial_ref_sys 表,type必須是乙個大寫的字串,用來描述幾何型別,例如:』polygon』 或者 『multilinestring』。

dropgeometrycolumn(, , )

從乙個空間資料表中刪除乙個幾何字段。

st_setsrid(geometry, integer)

給乙個幾何物件(geometry)設定乙個整型的srid,對於在乙個範圍內的查詢非常有用。

2. geometry relationship functions

幾何空間資料關係函式

st_distance(geometry, geometry)

返回兩個幾何物件的距離(笛卡兒距離),不使用索引。

st_dwithid(geometry, geometry, float)

如果乙個幾何物件(geometry)在另乙個幾何物件描述的距離(float)內,返回true。如果有索引,會用到索引。

st_equals(geometry, geometry)

如果兩個空間物件相等,則返回true。用這個函式比用「=」更好,例如:

equals(『linestring(0 0, 10 10)』,』linestring(0 0, 5 5, 10 10)』) 返回 true。

st_disjoint(geometry, geometry)

如果兩個物件不相連,則返回true。不要使用geometrycollection作為引數。

st_intersects(geometry, geometry)

判斷兩個幾何空間資料是否相交,如果相交返回true,不要使用geometrycollection作為引數。

intersects(g1, g2 ) –> not (disjoint(g1, g2 ))

不使用索引可以用_st_intersects.

st_touches(geometry, geometry)

如果兩個幾何空間物件存在接觸,則返回true。不要使用geometrycollection作為引數。

a.touches(b) -> (i(a) intersection i(b) = ) and (a intersection b) not empty

不使用索引可以用_st_touches.

st_crosses(geometry, geometry)

如果兩個幾何空間物件存在交叉,則返回true。不要使用geometrycollection作為引數。

不使用索引可以用_st_crosses.

st_within(geometry a, geometry b)

如果幾何空間物件a存在空間物件b中,則返回true,不要使用geometrycollection作為引數。

不使用索引可以用_st_within

st_overlaps(geometry, geometry)如果兩個幾何空間資料存在交迭,則返回 true,不要使用geometrycollection作為引數。

不使用索引可以用_st_overlaps.

st_contains(geometry a, geometry b)

如果幾何空間物件a包含空間物件b,則返回 true,不要使用geometrycollection作為引數。

這個函式類似於st_within(geometry b, geometry a)

不使用索引可以用_st_contains.

st_covers(geometry a, geometry b)如果幾何空間物件b中的所有點都在空間物件a中,則返回 true。

不要使用geometrycollection作為引數。

不使用索引可以用_st_covers.

st_coveredby(geometry a, geometry b)

如果幾何空間物件a中的所有點都在空間物件b中,則返回 true。

3,geometry processing functions

幾何空間資料處理函式

st_centroid(geometry)

返回質心點,就是根據幾何空間資料,活動該幾何空間資料的中心點,返回乙個空間點資料.

st_area(geometry)

如果幾何空間資料為多邊形,或者多多邊形,則返回空間資料的外圍(返回型別double precision) ;

st_length(geometry)

st_pointonsu***ce(geometry)

一定在幾何空間線資料上的點,返回乙個資料點

st_buffer(geometry, double, [integer])

buffer操作乙個很有用函式,

這個函式的第乙個引數是要操作的空間幾何資料,第二個引數長度(距離),第三個引數為乙個整型,

這個函式返回乙個空間資料型別,以當前第乙個引數空間幾何資料為參考點,返回小於等於距離的空間

幾何資料點,最後由這些點組成乙個多邊形空間資料,最後乙個引數表示

在組成乙個1/4圓的有幾個點分隔。也就是說如果最好乙個引數為8那麼這個最後組成的多邊形就是32邊

的多邊形,如果不指定這個引數,系統預設的是8

注意:第二個引數,距離它的單位為空間資料單位(度),在運算時需要進行單位換算,最後轉換成度

,單位的換算關係如下:

1英里= 63360 公尺

1公尺=1/1852 海浬

1海浬= 1/60度

如果要進行具體的運算,需要進行一下單位換算,比如要求乙個500公尺的範圍,那麼應該是

500*1/1852*1/60(度)

st_envelope(geometry)

這個函式可以返回mbr(空間最小外包矩形),傳入引數可以是point line polygon。

st_extent(geometry set)

這個函式可以對乙個空間資料集進行操作,返回乙個最小包含矩形(mbr).

如:select extent(geom) from geomtable group by category

st_difference(geometry a, geometry b)

返回乙個幾何空間資料a不同於空間資料b的幾何空間資料型別,不要使用geometrycollection作為引數。

也就是說,如果a為乙個line,b也為乙個line,那麼他們返回的型別就是b把a分割的多線。

如:select st_asewkt(st_difference(geomfromtext(『linestring(1 1,2 3,3 4,3 1)』),geomfromtext(『linestring(2 0,2 2,5 2,3 1)』)))

返回的multilinestring((1 1,2 3,3 4,3 2),(3 2,3 1))

如果是a和b都是乙個polygon多邊形,那麼返回的就是多多邊形,如果相交,那麼返回的就是b把a分割,並且不再b中的多多邊形。

select st_asewkt(st_difference(geomfromtext(『polygon((1 1,2 3,3 4,3 1,1 1))』),geomfromtext(『polygon((2 0,2 2,5 2,1 3,2 0))』)))

st_union(geometry, geometry)

返回乙個合併的幾何空間資料,將兩個幾何空間資料合併為乙個幾何空間資料,或者geometrycollection,不要使用geometrycollection作為引數。

4 ,geometry accessors

st_astext(geometry)

將幾何空間資料,轉換成容易理解的空間資料文字格式,

例如:(0,0 0,1 1,1 1,0 0,0)

轉換後應該是這樣的結果 polygon(0 0,0 1,1 1,1 0,0 0)

st_srid(geometry)

返回當前幾何空間資料的srid值

st_isclosed(geometry)

判斷幾何空間資料是否是閉合,就是判斷起始點和終點座標是相同的,如果是相同的返回true,否則返回false.

st_isring(geometry)

這個函式引數的物件是line,判斷起始點和終點座標是否相同,

如果閉合(這個曲線除了起始點和終點相同外,沒有其他相交點)怎返回true,否則false,

st_numpoints(geometry)

返回幾何空間資料linestring上的第一條線上點的個數。

geometrytype(geometry)

判斷幾何空間資料的型別。

例如select geometrytype(geomfromtext(『multilinestring((1 1,2 3,3 4,3 1,2 1,1 1),(1 2,2 3,4 5))』))

返回的型別為 multilinestring。

ArcPy學習入門(五) 工作空間

1 當前工作空間 執行工具時獲取輸入和放置輸出的工作空間。格式 arcpy.env.workspace path 地理處理工具輸入和輸出的預設位置 樣例 import arcpy set the workspace environment to local file geodatabase arcp...

基於arcpy實現空間資料聚類,kmeans

並不能直接進行空間資料的聚類,原理是讀取要素的x,y座標來進行聚類,然後將聚類中心儲存為空間資料以達到效果 encoding utf 8 from sklearn.cluster import kmeans import numpy as np import arcpy import pandas ...

MySQL 空間計算 空間查詢

一 前言 mysql實施了ogc建議的具有geometry型別的sql環境的乙個子集。該術語指的是用一組集合型別擴充套件的環境。具有幾何值的sql列是作為擁有集合型別的列實施的。該規範描述了sql幾何型別集合,以及作用在這些型別上用於建立和分析幾何值的函式。關於mysql空間儲存和查詢的概念介紹,可...