zoukankan      html  css  js  c++  java
  • ArcGIS的属性表里的shape字段内容(geometry)转换成WKT字符串的方法

    shape字段保存着geometry对象,它是以十六进制形式的二进制wkb数据,常规思路是把数据读到取出来,然后把它转回二进制,例如:
    十六进制字符串:
    2A0000000200000004000C00E9930400120300000100000080C7A0EAA50393959DD2FA05C3F8018AE805
    转成二进制:
    1010100000000000000000000000000000001000000000000000000000000000000100000000000000110000000000111010011001001100000100000000000001001000000011000000000000000000000001000000000000000000000000100000001100011110100000111010101010010100000011100100111001010110011101110100101111101000000101110000111111100000000001100010101110100000000101
    然后就可以解析成wkt了————解析方法需要安装环境
    ——————————————————————————————————————————
    其实,有另外一种更方便的方法:
    如果数据保存在postgis空间数据库中,可以使用postgis的st_astext()函数来直接获取
    todo:了解PostGIS常用函数
    python示例:
    `import psycopg2

    """
    postgis 方法
    st_astext
    """

    def get_data():
    """从空间数据库获取shape字段(Geometry)
    在sql语句中使用postgis方法st_astext()将shape转为
    """
    conn = psycopg2.connect(host='192.168.1.88', user='sde', password='123456', dbname='sde', port=5432)
    cursor = conn.cursor()
    # shape_sql = "select shape from bridge" # 获取shape字段的原始内容的sql
    # cursor.execute(shape_sql)
    shape_astext_sql = "select st_astext(shape) from bridge" # 获取shape字段的转换后的内容的sql
    cursor.execute(shape_astext_sql)
    res = cursor.fetchall()
    conn.close()
    return res

    if name == 'main':
    res = get_data()
    for i in res[3]:
    print(i)`

  • 相关阅读:
    (原创)在ER/Studio中使用宏把Attribute name复制到Definition
    Xming + PuTTY 在Windows下远程Linux主机使用图形界面的程序
    一个时间日期转换格式的小功能(Oracle)
    C#正则表达式整理备忘【转】
    【转】一篇好文,以在迷茫时阅读
    经常关注的、极具参考价值的网站收集(无限畅想版)
    中文分词备忘
    我心目中的编程高手
    网站推荐
    通过手机短信控制电脑
  • 原文地址:https://www.cnblogs.com/mzfly/p/15606530.html
Copyright © 2011-2022 走看看