Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak przekonwertować SDO_GEOMTRY w GeoJSON

Jest to użycie (jeszcze nieopublikowanej) wersji cx_Oracle, która obsługuje wiązanie obiektów i inne bardziej zaawansowane zastosowania obiektów. Korzystając z przykładu dostarczonego z cx_Oracle do zademonstrowania wstawiania geometrii, poniższy kod przekształci utworzony w ten sposób obiekt do formatu JSON. Funkcja ObjectRepr() zawarta poniżej powinna działać dla każdego obiektu zwróconego przez Oracle. Po prostu odczytuje metadane obiektu i zamienia obiekt w słownik atrybutów lub listę wartości.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wyłączyć wyzwalacz w Oracle SQL Developer?

  2. Wybieranie n pierwszych elementów grupy w Oracle

  3. Zwróć komunikat z kodem błędu w Oracle Stored Proc

  4. Znacznik czasu Oracle, wartości maksymalne i minimalne

  5. Błąd aktualizacji Liquibase