postgis中构造geojson

2024-05-16 05:18
文章标签 构造 geojson postgis

本文主要是介绍postgis中构造geojson,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先注意:

比如现在有两张表,一张population_rural表和一张sichuan表,population_rural表提供属性数据,sichuan表提供地理空间数据

population_rural表内容如下:

现在从population_rural表中查,并将结果表存在名为B的暂存表中

sichuan表内容如下:

现在从sichuan表中查,并将结果表存在名为A的暂存表中

想把geom字段命名为geometry,如下:

 接着想把geometry字段中的数据改为json格式,用函数:st_asgeojson()可以实现:

现在想把A表和B表放在一块,有三种方式:

1:使用on连接

2:使用using连接

可以看到,使用USING(city),它会自动使用on A.city=B.city,而且结果只会保留一个city。

3:使用natural连接。推荐使用这个,因为这样就可以带入变量了。

NATURAL是USING 的简写形式。

注意:要合并的字段名要相同,否则自动合并后会有各自的两个字段,如下:

然后把查出的数据存到名为C 的暂存表中,如下:

接着想要添加值为Feature的type字段,并且构造properties字段

然后构造geojson外层

最后构造出geojson

最终构造geojson成功的代码:

 
  1. with A as( select name as city ,st_asgeojson(geom)::json as geometry,center from sichuan),

  2. B as (select city,sum(num) from population_rural GROUP BY city),

  3. C as(select * from A natural inner join B ),

  4. feature as( select 'Feature' as type, geometry, (select json_strip_nulls(row_to_json(fields)) from (select city,center,sum) as fields) as properties from C),

  5. features as(select 'FeatureCollection' as type, array_to_json(array_agg(feature.*)) as features from feature )

  6. select row_to_json(features.*) from features

例2:

现在有一张表,内容如下

 
  1. with a as( select  name,center,st_asgeojson(geom)::json as geometry from sichuan)

  2.  
  3. select * from a

把它转为geojson:

 
  1. feature as( select 'Feature' as type, geometry, (select json_strip_nulls(row_to_json(fields)) from (select name,center) as fields)  as properties from a),

  2.  
  3. features as(select  'FeatureCollection' as type, array_to_json(array_agg(feature.*)) as features from feature )

  4.  
  5. select row_to_json(features.*) from features

综合:

 
  1. with a as( select  name,center,st_asgeojson(geom)::json as geometry from sichuan),

  2.  
  3. feature as( select 'Feature' as type, geometry, (select

  4. json_strip_nulls(row_to_json(fields)) from (select name,center) as fields)  as

  5. properties from a),

  6.  
  7. features as(select  'FeatureCollection' as type, array_to_json(array_agg(feature.*)) as

  8. features from feature )

  9.  
  10. select row_to_json(features.*) as geojsondata from features

 

这篇关于postgis中构造geojson的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/993984

相关文章

leetcode105 从前序与中序遍历序列构造二叉树

根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3/ \9 20/ \15 7   class Solution {public TreeNode buildTree(int[] pr

C++中类的构造函数调用顺序

当建立一个对象时,首先调用基类的构造函数,然后调用下一个派生类的 构造函数,依次类推,直至到达派生类次数最多的派生次数最多的类的构造函数为止。 简而言之,对象是由“底层向上”开始构造的。因为,构造函数一开始构造时,总是 要调用它的基类的构造函数,然后才开始执行其构造函数体,调用直接基类构造函数时, 如果无专门说明,就调用直接基类的默认构造函数。在对象析构时,其顺序正好相反。

Java构造和解析Json数据的两种方法(json-lib构造和解析Json数据, org.json构造和解析Json数据)

在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别。下面首先介绍用json-lib构造和解析Json数据的方法示例。 一、介绍       JSON-lib包是一个beans,collections,maps,java arrays 和XML和JSON互相转换的包,主要就是用来解析Json

CF #278 (Div. 2) B.(暴力枚举+推导公式+数学构造)

B. Candy Boxes time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output 题目链接: http://codeforces.com/contest/488/problem/B There

MemSQL Start[c]UP 2.0 - Round 1A(构造)

题目链接:http://codeforces.com/problemset/problem/452/A 解题思路: 打个表暴力查找匹配。 完整代码: #include <algorithm>#include <iostream>#include <cstring>#include <complex>#include <cstdio>#include <strin

Codeforces Round #281 (Div. 2)A(构造+暴力模拟)

题目链接:http://codeforces.com/problemset/problem/493/A 解题思路: 暴力的判断,分三种情况去判断即可。注意如果之前已经被罚下场后,那么在后面的罚下情况不应该算在输出结果内。 完整代码: #include <algorithm>#include <iostream>#include <cstring>#include <co

Codeforces Round #233 (Div. 2)A(构造)

题目链接:http://codeforces.com/contest/399/problem/A 解题思路: 构造出来即可,考虑p-k和p+k两个边界分别于1和n作比较,对左右符号特殊处理。 完整代码: #include <algorithm>#include <iostream>#include <cstring>#include <complex>#include

Codeforces Round #247 (Div. 2)A(构造)

题目链接:http://codeforces.com/contest/431/problem/A 解题思路: 构造出来即可。 完整代码: #include <algorithm>#include <iostream>#include <cstring>#include <complex>#include <cstdio>#include <string>#inc

C函数特性:构造与析构(constructor destructor)

文章目录 0x1 constructor0x2 constructor_priority0x3 destructor0x4 destructor_priority 0x1 constructor attribute((constructor)) 是 GCC 编译器的一个特性,它允许定义一个特殊的函数,这个函数会在 main 函数执行之前,也就是程序开始执行时被调用。 这通常用于执

C语言手撕实战代码_二叉树_构造二叉树_层序遍历二叉树_二叉树深度的超详细代码实现

二叉树习题1.通过前序序列和中序序列构造二叉树2.通过层次遍历序列和中序序列创建一棵二叉树3.求一棵二叉树的结点个数4.求一棵二叉树的叶子节点数5.求一棵二叉树中度为1的节点个数6.求二叉树的高度7.求一棵二叉树中值为x的节点作为根节点的子树深度8.判断两棵树是否相似,相似返回1,不相似返回09.设计算法利用叶子结点中的空指针域将所有叶子结点链接成一个带头结的双链表10.假设一个仅包含二元运算的算