Postgress SQL 9.x上邮政编码之间的Postgis ST_距离
这更像是一个SQL问题,而不是PostGIS问题,但我又被卡住了:( 我有一个名为referenced的表,在“from”和“to”列中有id号。 我想根据邮政编码计算所有这些身份证号码之间的距离 有一个称为doc的单独参考表,其中包含“NPI”列中的id号和“提供商业务邮寄地址邮政编码”列中的邮政编码,还有一个称为zctas的单独地理表,其邮政编码列为zcta和geom列 例如,此查询工作正常:Postgress SQL 9.x上邮政编码之间的Postgis ST_距离,sql,postgresql,postgis,Sql,Postgresql,Postgis,这更像是一个SQL问题,而不是PostGIS问题,但我又被卡住了:( 我有一个名为referenced的表,在“from”和“to”列中有id号。 我想根据邮政编码计算所有这些身份证号码之间的距离 有一个称为doc的单独参考表,其中包含“NPI”列中的id号和“提供商业务邮寄地址邮政编码”列中的邮政编码,还有一个称为zctas的单独地理表,其邮政编码列为zcta和geom列 例如,此查询工作正常: SELECT z.zcta As zip1, z2.zcta As zip2,
SELECT z.zcta As zip1,
z2.zcta As zip2,
ST_Distance(z.geom,z2.geom) As thedistance
FROM zctas z,
zctas z2
WHERE z2.zcta = '60611'
AND z.zcta='19611';
一个问题是“提供商业务邮寄地址邮政编码”应该=左(“提供商业务邮寄地址邮政编码”,5)
在这一个查询中,我一直在连接引用表中的2个邮政编码
样本表:
参考表:
from | to | count
------------+------------+-------
1174589766 | 1538109665 | 108
1285653204 | 1982604013 | 31
期望输出:
from | to | count | distance
------------+------------+----------------
1174589766 | 1538109665 | 108 | 53434
1285653204 | 1982604013 | 31 | 34234
\d+
谢谢!!!!这应该是相对简单的 假设NPI在
doc
和referenced
中实际上都是相同的长度,您可以非常轻松地连接这些表:
SELECT ad."Provider Business Mailing Address Postal Code" as a_zip,
bd."Provider Business Mailing Address Postal Code" as b_zip,
r."count"
FROM referred r
LEFT JOIN doc ad ON r."from" = ad."NPI"
LEFT JOIN doc bd ON r."from" = bd."NPI";
显然,在仔细分析数据中的NPI
和from
/to
字段的基础上调整此联接。如果需要,在联接中添加trim
或left
方法调用-最重要的是联接
条件是基于可比较的数据
现在,从这个查询到原始查询查找距离是很简单的:
SELECT ad."Provider Business Mailing Address Postal Code" as a_zip,
bd."Provider Business Mailing Address Postal Code" as b_zip,
r."count",
ST_Distance(az.geom,bz.geom) As thedistance
FROM referred r
LEFT JOIN doc ad ON r."from" = ad."NPI"
LEFT JOIN doc bd ON r."from" = bd."NPI"
LEFT JOIN zctas az
ON az.zcta = left(ad."Provider Business Mailing Address Postal Code",5)
LEFT JOIN zctas bz
ON bz.zcta = left(bd."Provider Business Mailing Address Postal Code",5)
这只是一种结构,其他许多结构都是可行的。这种特殊的结构将确保引用的中的每个条目都被表示出来,即使NPI
与doc
表中的条目不匹配,或者zipcode无法与zctas
表匹配
另一方面,如果doc
表中的NPI
存在多个条目,则提及此重复NPI
的任何引用的条目也将被复制
类似地,如果一个特定邮政编码(zcta
)的zcta
中有多个条目,您将看到重复的参考行
这就是左连接的工作原理,但我认为值得在警告中加上它,因为提供商数据通常都是NPI的重复数据,而且在邮政编码查找列表中经常会有重复的邮政编码,因为一些邮政编码跨州线。提供了一个表定义。我不确定你的意思。你想要整个方案吗所有表格中的一个?谢谢。每个表格都收到了。谢谢。上面编辑了。从到和到的ID与其他内容有什么关系?
SELECT ad."Provider Business Mailing Address Postal Code" as a_zip,
bd."Provider Business Mailing Address Postal Code" as b_zip,
r."count",
ST_Distance(az.geom,bz.geom) As thedistance
FROM referred r
LEFT JOIN doc ad ON r."from" = ad."NPI"
LEFT JOIN doc bd ON r."from" = bd."NPI"
LEFT JOIN zctas az
ON az.zcta = left(ad."Provider Business Mailing Address Postal Code",5)
LEFT JOIN zctas bz
ON bz.zcta = left(bd."Provider Business Mailing Address Postal Code",5)