您好我有GPS坐标的地址列表,我需要将其分组到大约600个地址的组中以创建分组ID。分组应该几乎是方形多边形。
这些是我所拥有的规格:
计划:Oracle
记录:522,000
我的数据包含以下列:
GEO_ID (Primary Key)
MUN_NAME (VarChar)(City Name)
LONUM (Int)(House number)
DISTANCE (int)
FCODE (int)
FCODE_DES (VarChar)(Dwelling Type)
LATITUDE (Int)
LFNAME (Street string)
LONGITUDE (Int)
OBJECTID (Int)
WARD_NAME (VarChar)
X (Int)
Y (Int)
根据我对系统限制的计算,下面所需的组字段说明需要创建多少个集群才能超过我们系统的600集群限制。
City addresses Max Clusters Required Clusters
York 32277 600 53
East York 23957 600 39
Former Toronto 156563 600 260
Etobicoke 72721 600 121
North York 113542 600 189
Scrborough 123016 600 205
理想情况下,我想在oracle中执行所有这些操作,并且能够运行此查询以创建新分组,或者在现有分组中添加地址,如果它们出现在数据中。
我完全迷失了如何做到这一点,我通过几个关于K的帖子阅读,但无法弄清楚如何创建分组。
这是我到目前为止的代码:
Select LONGITUDE,
LATITUDE,
lat_diff,
long_diff,
(power(lat_diff,2)+power(long_diff,2))
From
(
Select
LONGITUDE,
LATITUDE,
COALESCE( Latitude - lag(Latitude, 1 , Null) over (order by Latitude), Latitude)as lat_diff,
Round(COALESCE( Longitude - lag(LONGITUDE, 1 , Null) over (order by LONGITUDE), LONGITUDE),20) as long_diff,
Latitude || '-' ||
Lead( Latitude, 1,0) over (order by Latitude) as prev_Latitude
From RPT.GTA_ADDRESS_DATA
ORDER BY LATITUDE asc
)
谢谢!