Lagi

Perbarui tabel dengan nilai dari koordinat pada GEOMETRY di Oracle

Perbarui tabel dengan nilai dari koordinat pada GEOMETRY di Oracle


Saya memiliki 2 kolom dalam tabel yang mewakili koordinat X dan Y. Nilai di kolom tersebut tidak cocok dengan koordinat sebenarnya dan saya ingin memperbaruinya dengan nilai koordinat yang dipilih dari kolom GEOMETRI. Saya telah mencoba yang berikut ini:

perbarui TABLE1 set X = (PILIH t.X DARI TABLE1 Tb, tabel(SDO_UTIL.GETVERTICES(Tb.GEOMETRY )) t);

tetapi saya mendapatkan kesalahan berikut:

ORA-01427: subquery baris tunggal mengembalikan lebih dari satu baris

Ada saran?


Solusinya tergantung pada geometri layer Anda.

Geometri Titik

Untuk poin, Anda dapat mengakses koordinat X dan Y secara langsung:

perbarui TABLE1 s1 set X = s1.GEOMETRY.SDO_POINT.x,y=s1.geometry.sdo_point.y

Poligon, Multi-titik

SDO_UTIL.GETVERTICES akan mengembalikan semua simpul geometri Anda, dan kueri Anda sebelumnya akan gagal jika geometri memiliki lebih dari satu simpul, atau jika t1 memiliki lebih dari satu baris.

Anda dapat menggunakan fungsi untuk menghitung titik pusat atau titik label poligon dan menggunakannya untuk mengisi kolom Anda. Ini rumit dengan cara pembaruan dengan gabungan bekerja di Oracle.

perbarui table1 t1 set x = (pilih c.centroid.sdo_point.x dari (pilih sdo_geom.sdo_centroid(shape,1) centroid,rowid dari table1) c di mana c.rowid=t1.rowid)

Tonton videonya: TSQL: Update Table From Another Table