首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:无效的GeoJson表示

错误:无效的GeoJson表示
EN

Database Administration用户
提问于 2019-01-19 21:15:10
回答 2查看 3.3K关注 0票数 4

GeoJSON规格展,

代码语言:javascript
复制
{
  "type": "Feature",
  "geometry": {
    "type": "Point",
    "coordinates": [125.6, 10.1]
  },
  "properties": {
    "name": "Dinagat Islands"
  }
}

但当我调用ST_GeomFromGeoJSON时,就像这样,

代码语言:javascript
复制
SELECT ST_GeomFromGeoJSON(${                                                                                                                          
  "type": "Feature",                                                                                                                                   
  "geometry": {                                                                                                                                        
    "type": "Point",                                                                                                                                   
    "coordinates": [125.6, 10.1]                                                                                                                       
  },                                                                                                                                                   
  "properties": {                                                                                                                                      
    "name": "Dinagat Islands"                                                                                                                          
  }                                                                                                                                                    
}$);

我知道错误了,

错误:无效的GeoJson表示

EN

回答 2

Database Administration用户

回答已采纳

发布于 2019-01-19 21:15:10

ST_GeomFromGeoJSON上的文档

ST_GeomFromGeoJSON只适用于JSON几何学片段。如果尝试在整个JSON文档上使用它,则会引发错误。

这意味着您将只想从GeoJSON文档中的几何图形中删除值,

代码语言:javascript
复制
SELECT ST_AsText(geom)
FROM ST_GeomFromGeoJSON(${                                                                                                                          
  "type": "Point",                                                                                                                                   
  "coordinates": [125.6, 10.1]                                                                                                                       
}$) AS geom;

     st_astext     
-------------------
 POINT(125.6 10.1)

ST_GeomFromGeoJSONST_AsGeoJSON相反(只生成GeoJSON文档的geometry部分)。

票数 5
EN

Database Administration用户

发布于 2021-04-02 11:04:58

现代PostgreSQL + PostGIS接受JSONB,这是这项工作的最佳数据类型。

代码语言:javascript
复制
WITH json_load AS (
 SELECT ${
  "type": "Feature",
  "geometry": {
    "type": "Point",
    "coordinates": [125.6, 10.1]
  },
  "properties": {
    "name": "Dinagat Islands"
  }
 }$::JSONB j
)

SELECT 
   j->>'type' AS type,
   ST_GeomFromGeoJSON(j->'geometry') geom,
   j->'properties' AS props,
   (j->geometry->coordinates->1)::real AS longitude
FROM json_load;

您只需要geom列,所有其他列都说明了JSONb表达式的丰富性,以及如何方便地转换为文本数据类型、真实的等等。

请注意。在服务器端,在json_load部件中,可以使用pg_read_file('/tmp/myFile.geojson')::jsonb读取文件.以前使用类似于chmod 666 /tmp/myFile.geojson的东西。几何的GeoJSON排序可以用jsonb_array_elements函数来实现。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/227580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档