簡體   English   中英

SELECT pgr_nodeNetwork 查詢失敗

[英]SELECT pgr_nodeNetwork query fails

我正在研究 windows,並啟用了擴展 postgis,數據庫上的 pgrouting。 我安裝了 postgreSQL 9.4,我正在使用來自無限工作室的數據( http://workshops.boundlessgeo.com/tutorial-routing/ )。

SELECT pgr_nodeNetwork('edges',0.001,'geom','gid','noded')

當我運行此查詢時,它會運行大約 1 分鍾,然后會導致FAIL 我該如何解決這個問題? 我的 pgr_createTopology 查詢已成功運行。

NOTICE:  PROCESSING:
NOTICE:  pgr_nodeNetwork('edges',0.001,'geom','gid','noded')
NOTICE:  Performing checks, pelase wait .....
NOTICE:  Processing, pelase wait .....
ERROR:  line_locate_point: 1st arg isnt a line
CONTEXT:  SQL statement "create temp table inter_loc on commit drop as ( select * from (
        (select l1id, l2id, st_linelocatepoint(line,source) as locus from intergeom)
         union
        (select l1id, l2id, st_linelocatepoint(line,target) as locus from intergeom)) as foo
        where locus<>0 and locus<>1)"
PL/pgSQL function pgr_nodenetwork(text,double precision,text,text,text) line 184 at EXECUTE statement
********** Error **********

ERROR: line_locate_point: 1st arg isnt a line
SQL state: XX000
Context: SQL statement "create temp table inter_loc on commit drop as ( select * from (
        (select l1id, l2id, st_linelocatepoint(line,source) as locus from intergeom)
         union
        (select l1id, l2id, st_linelocatepoint(line,target) as locus from intergeom)) as foo
        where locus<>0 and locus<>1)"
PL/pgSQL function pgr_nodenetwork(text,double precision,text,text,text) line 184 at EXECUTE statement

我在我的項目中遇到了這個問題,我堅持了幾個小時試圖找出導致它的原因以及如何解決它。 我將描述我的情況以及我如何解決它,希望它能在未來幫助其他人。

我正在使用ogr2ogr將 Shapefile 導入我的數據庫,並且在導入過程中我使用-nlt PROMOTE_TO_MULTI作為我的 arguments 之一; 這導致我的幾何圖形被導入為 MultiLineStrings。

從我觀察到的行為和其他人(以及更多人提到的行為來看, pgr_nodeNetwork() function 不能很好地與 MutliLineStrings 配合使用。

由於 MultiLineStrings 不適用於路由,我從 dkastl 的回答中獲取了 SQL 並在我的數據上運行它以查看我是否真的需要MultiLineStrings 或者我是否可以只使用 LineStrings。

SELECT
    COUNT(
        CASE WHEN ST_NumGeometries(geom) > 1 THEN 1 END
    ) AS multi,
    COUNT(geom) AS total
FROM network_nodes;

運行之后,我發現我對 MultiLineStrings 的需求為零,所以我使用-nlt LINESTRING重新導入了帶有 ogr2ogr 的 Shapefile,然后能夠毫無問題地運行pgr_nodeNetwork()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM