zoukankan      html  css  js  c++  java
  • 将PostGIS转化为GeoJSON

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import psycopg2
    import json
    from geojson import loads, Feature, FeatureCollection
    
    
    # Database Connection Info
    db_host = "localhost"
    db_user = "pluto"
    db_passwd = "stars"
    db_database = "py_geoan_cb"
    db_port = "5432"
    
    # connect to DB
    conn = psycopg2.connect(host=db_host, user=db_user, 
        port=db_port, password=db_passwd, database=db_database)
    
    # create a cursor
    cur = conn.cursor()
    
    # the PostGIS buffer query
    buffer_query = """SELECT ST_AsGeoJSON(ST_Transform(
                ST_Buffer(wkb_geometry, 100,'quad_segs=8'),4326)) 
                AS geom, name
                FROM geodata.schools"""
    
    # execute the query
    cur.execute(buffer_query)
    
    # return all the rows, we expect more than one
    dbRows = cur.fetchall()
    
    # an empty list to hold each feature of our feature collection
    new_geom_collection = []
    
    # loop through each row in result query set and add to my feature collection
    # assign name field to the GeoJSON properties
    for each_poly in dbRows:
        geom = each_poly[0]
        name = each_poly[1]
        geoj_geom = loads(geom)
        myfeat = Feature(geometry=geoj_geom, properties={'name': name})
        new_geom_collection.append(myfeat)
    
    # use the geojson module to create the final Feature Collection of features created from for loop above
    my_geojson = FeatureCollection(new_geom_collection)
    
    # define the output folder and GeoJSon file name
    output_geojson_buf = "../geodata/out_buff_100m.geojson"
    
    
    # save geojson to a file in our geodata folder
    def write_geojson():
        fo = open(output_geojson_buf, "w")
        fo.write(json.dumps(my_geojson))
        fo.close()
    
    # run the write function to actually create the GeoJSON file
    write_geojson()
    
    # close cursor
    cur.close()
    
    # close connection
    conn.close()
  • 相关阅读:
    【Jquery】根据元素个数给予宽度
    【Jquery】判断宽度跳转
    【CSS】滚动条样式
    关于vue在列表展示数据的时候,选择更改其中一项,数据跟着实时变动的问题
    JAVA基础知识
    华为机试 字符串分隔
    华为机试 计算字符个数
    华为机试 字符串最后一个单词的长度
    简单构造 Ext.tree 树例子
    Ext.form.Label组件动态设置html值
  • 原文地址:https://www.cnblogs.com/gispathfinder/p/5745967.html
Copyright © 2011-2022 走看看