sql >> Databáze >  >> RDS >> Oracle

Jak převést SDO_GEOMTRY v GeoJSON

Používá se (zatím nevydaná) verze cx_Oracle, která podporuje vazbu objektů a další pokročilejší použití objektů. Pomocí ukázky poskytnuté s cx_Oracle pro demonstraci vložení geometrie převede následující kód takto vytvořený objekt na JSON. Funkce ObjectRepr() zahrnutá níže by měla fungovat pro jakýkoli objekt vrácený z Oracle. Jednoduše načte metadata o objektu a změní objekt na slovník atributů nebo seznam hodnot.

import cx_Oracle
import json

connection = cx_Oracle.Connection("user/[email protected]")
typeObj = connection.gettype("SDO_GEOMETRY")
cursor = connection.cursor()
cursor.execute("""
        select Geometry
        from TestGeometry
        where IntCol = 1""")
obj, = cursor.fetchone()

def ObjectRepr(obj):
    if obj.type.iscollection:
        returnValue = []
        for value in obj.aslist():
            if isinstance(value, cx_Oracle.Object):
                value = ObjectRepr(value)
            returnValue.append(value)
    else:
        returnValue = {}
        for attr in obj.type.attributes:
            value = getattr(obj, attr.name)
            if value is None:
                continue
            elif isinstance(value, cx_Oracle.Object):
                value = ObjectRepr(value)
            returnValue[attr.name] = value
    return returnValue

print("JSON:", json.dumps(ObjectRepr(obj)))



  1. Problém se zablokováním MySQL s InnoDB

  2. IS NULL vs =NULL v klauzuli where + SQL Server

  3. Zavádí se nový sloupec pro součet za předchozí měsíc

  4. V MySQL mohu odložit kontroly referenční integrity až do potvrzení