2017-08-04 3 views
0

を取得し、私は右の構文何それを把握するように見えることはできません。ポイントの交差点(緯度、長い)と私は最近PostGISの</strong><strong>と一緒<strong>のPostgres</strong>に手を入れている特定の領域

問題:特定の領域にあるポイントのIDのリストが必要です。 緯度およびlonは、bigintの2つの列であり、cluj.the_geomは、polygonです。

link_geometry:link_id |緯度|経度

クルージュ:the_geom

SELECT link_id 
FROM rou_country_20656215.link_geometry r, cluj 
WHERE ST_Intersects(ST_PointFromText((CAST(r.lon AS float)/100000, CAST(r.lat AS float)/100000), 4326), cluj.the_geom) 

私は、次のエラーメッセージが出ます:

ERROR

私はテーブルを変更するためのアクセス権を持っていないことを言及します。

答えて

0

:あなたの緯度と経度の値がテキスト(あなたのコード内で暗黙的に)していると仮定すると、これはあなたが必要とする表現の種類を生成する必要があります私はSRIDを設定していませんでした。

SELECT link_id, 
FROM rou_country_20656215.rdf_link_geometry r, rou_country_20656215.cluj c 
WHERE ST_Intersects(
      ST_SetSRID(
       ST_MakePoint(CAST(r.lon AS float)/10^5, CAST(r.lat AS float)/10^5),4326),c.the_geom) 
0

2つのCAST式のまわりの括弧と、それらの間のカンマは、その式がレコードとして解釈される結果になります。代わりに文字列にする必要があります。レコードから離れて、私はこのようにそれを解決してきました最後に

SELECT link_id 
FROM rou_country_20656215.link_geometry r, cluj 
WHERE 
    ST_Intersects(
     ST_PointFromText(cast(cast(r.lon AS float)/100000 as text) 
      || cast(cast(r.lat AS float)/100000 as text)), 4326)), 
      cluj.the_geom); 
関連する問題