Rumah pangkalan data tutorial mysql ArcSDE地理数据库跨用户以及跨数据库表关联研究

ArcSDE地理数据库跨用户以及跨数据库表关联研究

Jun 07, 2016 pm 03:47 PM
a persatuan pangkalan data pengguna Penyelidikan

ArcSDE提供多种方式的关联操作,Join、Relate、ArcSDE视图、QueryLayer、RelationshipClass等,每一种方式都有自己独特的适用范围和方法。 但是一般情况下,我们在介绍这些方法的使用过程中,无疑都是在同一个数据库(SQLServer)和同一个用户下(Oracle)下

ArcSDE提供多种方式的关联操作,Join、Relate、ArcSDE视图、QueryLayer、RelationshipClass等,每一种方式都有自己独特的适用范围和方法。


但是一般情况下,我们在介绍这些方法的使用过程中,无疑都是在同一个数据库(SQLServer)和同一个用户下(Oracle)下的环境中使用,但是很多用户在实际过程中使用了关联,其实都是空间数据和属性数据的关联,这些属性数据往往与空间数据不再一块儿,那么类似这种情况下,ArcSDE是否可以实现呢?


通用的方法就是Join,用户可以将不同存储位置的数据加载到ArcMap中进行Join,然后保存MXD,不管是直接操作该关联对象还是发布ArcGIS Server服务都是可以的,但是这种方式给用户带来的不是性能低下就是在发布服务的时候有明显的问题。

比如,当发布服务时,数据源进行join,在ArcGIS10.1环境下会出现一个问题

1:当ArcGIS10.1 SP1补丁,Join之后的标注看不到,但是不打SP1补丁可以,该问题经过跟美国沟通是一个Bug:

NIM087311 Map labels do not work in a map service if the feature class resides in an

ArcSDE database and is joined to a table.

http://support.esri.com/en/bugs/nimbus/TklNMDg3MzEx

该问题已经在ArcGIS 10.1 SP1 for (Desktop, Engine, Server) Quality Improvement Patch和ArcGIS10.2已经解决。


2:使用Join发布服务,在query中可以查到结果,在find中不行。


那么我们只能通过ArcSDE视图或者QueryLayer的方式来解决这个问题。

----------------------------------------------------------------------------------


Blog:               http://blog.csdn.net/linghe301

----------------------------------------------------------------------------------


SQLServer数据库

例如,我的测试数据,空间数据pl和属性数据owner,两者共有的关联字段是pid,那么pl存储在sde101的数据库中(database),owner存储在test数据库中。



ArcSDE地理数据库跨用户以及跨数据库表关联研究

注意:因为牵涉到跨库操作,所以,我设置了sde用户默认对sde101数据库有操作权限,我还需要设置sde用户对test数据库有相关权限,如果更加严谨的话,sde用户对test数据库中的owner 表有操作权限。


1:使用ArcSDE命令视图方法

C:\Program Files\ArcGIS\ArcSDE\sqlexe\bin>sdetable -o create_view -T myview123 -t sde101.dbo.place,test.dbo.owner -c sde101.dbo.place.objectid,sde101.dbo.place.shape,sde101.dbo.place.pid,test.dbo.owner.name -a objectid,shape,pid,name -w "sde101.dbo.place.pid=test.dbo.owner.pid" -i sde:sqlserver:lishaohua -s lishaohua -D sde101 -u sde -p Super123


ArcSDE 10.2
Attribute        Administration Utility
-----------------------------------------------------
        Error: Invalid database name (-162).
        Error: Unable to create view myview123
Salin selepas log masuk
提示无效的数据库名称

那么如果我直接将owner拷贝到sde101数据库,也就是同一个数据库下的空间数据与属性数据进行关联,测试创建视图没有问题。

C:\Program Files\ArcGIS\ArcSDE\sqlexe\bin>sdetable -o create_view -T myview -t sde101.dbo.place,sde101.dbo.owner -c sde101.dbo.place.objectid,sde101.dbo.place.shape,sde101.dbo.place.pid,sde101.dbo.owner.name -a objectid,shape,pid,name -w "sde101.dbo.place.pid=sde101.dbo.owner.pid" -i sde:sqlserver:lishaohua -s lishaohua -D sde101 -u sde -p Super123


ArcSDE 10.2
Attribute        Administration Utility
-----------------------------------------------------
Successfully created view myview.
Salin selepas log masuk
总结:也就是说ArcSDE命令不支持SQLServer的跨数据库关联。


2:使用QueryLayer关联

ArcSDE地理数据库跨用户以及跨数据库表关联研究

总结:用户可以使用QueryLayer实现SQLServer的跨数据库关联,用户使用QueryLayer发布ArcGIS Server服务没有问题。

----------------------------------------------------------------------------------


Blog:               http://blog.csdn.net/linghe301

----------------------------------------------------------------------------------


Oracle数据库

例如测试数据,sde用户下存储空间数据PL,aaa用户下存储属性数据owner,关联字段为pid

1:使用ArcSDE命令创建视图

C:\Users\Administrator>sdetable -o create_view  -T myview -t sde.pl,aaa.owner -c sde.pl.objectid,sde.pl.shape,sde.pl.name,aaa.owner.name -a objectid,shape,name1,name2 -w "sde.pl.pid=aaa.owner.pid" -i sde:oracle11g:192.168.220.131/orcl -u sde -p sde


ArcSDE 10.2
Attribute        Administration Utility
-----------------------------------------------------
        Error: Underlying DBMS error (-51).
        Error: Unable to create view myview
ORA-01720: 不存在 'AAA.OWNER' 的授权选项
Salin selepas log masuk

系统提示sde用户并没有对aaa.owner有权限。

C:\Users\Administrator>sqlplus aaa/aaa@orcl_131

SQL*Plus: Release 11.2.0.1.0 Production on 星期四 2月 27 11:51:38 2014

Copyright (c) 1982, 2010, Oracle.  All rights reserved.


连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> grant select on owner to sde with grant option;

授权成功。

SQL> exit
从 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options 断开

C:\Users\Administrator>sdetable -o create_view  -T myview -t sde.pl,aaa.owner -c sde.pl.objectid,sde.pl.shape,sde.pl.name,aaa.owner.name -a objectid,s
hape,name1,name2 -w "sde.pl.pid=aaa.owner.pid" -i sde:oracle11g:192.168.220.131/orcl -u sde -p sde


ArcSDE 10.2
Attribute        Administration Utility
-----------------------------------------------------
Successfully created view myview.
Salin selepas log masuk

使用aaa用户将owner表赋予sde用户,然后创建视图成功。

总结:Oracle数据库支持跨用户创建ArcSDE空间视图


2:使用QueryLayer方式

ArcSDE地理数据库跨用户以及跨数据库表关联研究

总结;可以看到,使用QueryLayer也是支持跨用户关联的。


那么在oracle数据库中,如果用户希望跨数据库实例,请参考:

ArcSDE进行跨数据库的关联
http://blog.csdn.net/linghe301/article/details/7237049

但是这种方法有很多问题,不建议用户使用。



更多参考:


ArcGIS表关联方式介绍(二)-ArcSDE视图、QueryLayer、RelationshipClass
http://blog.csdn.net/linghe301/article/details/6649717


ArcGIS表关联方式介绍(一)-Join、Relate
http://blog.csdn.net/linghe301/article/details/6649689

----------------------------------------------------------------------------------


Blog:               http://blog.csdn.net/linghe301

----------------------------------------------------------------------------------



Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimanakah bahasa Go melaksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan pangkalan data? Bagaimanakah bahasa Go melaksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan pangkalan data? Mar 27, 2024 pm 09:39 PM

Bahasa Go ialah bahasa pengaturcaraan yang cekap, ringkas dan mudah dipelajari Ia digemari oleh pembangun kerana kelebihannya dalam pengaturcaraan serentak dan pengaturcaraan rangkaian. Dalam pembangunan sebenar, operasi pangkalan data adalah bahagian yang sangat diperlukan Artikel ini akan memperkenalkan cara menggunakan bahasa Go untuk melaksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan pangkalan data. Dalam bahasa Go, kami biasanya menggunakan perpustakaan pihak ketiga untuk mengendalikan pangkalan data, seperti pakej sql yang biasa digunakan, gorm, dsb. Di sini kami mengambil pakej sql sebagai contoh untuk memperkenalkan cara melaksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan pangkalan data. Andaikan kami menggunakan pangkalan data MySQL.

Tutorial terperinci tentang mewujudkan sambungan pangkalan data menggunakan MySQLi dalam PHP Tutorial terperinci tentang mewujudkan sambungan pangkalan data menggunakan MySQLi dalam PHP Jun 04, 2024 pm 01:42 PM

Cara menggunakan MySQLi untuk mewujudkan sambungan pangkalan data dalam PHP: Sertakan sambungan MySQLi (require_once) Cipta fungsi sambungan (functionconnect_to_db) Fungsi sambungan panggilan ($conn=connect_to_db()) Laksanakan pertanyaan ($result=$conn->query()) Tutup sambungan ( $conn->close())

Bagaimanakah Hibernate melaksanakan pemetaan polimorfik? Bagaimanakah Hibernate melaksanakan pemetaan polimorfik? Apr 17, 2024 pm 12:09 PM

Pemetaan polimorfik hibernate boleh memetakan kelas yang diwarisi ke pangkalan data dan menyediakan jenis pemetaan berikut: subkelas bercantum: Cipta jadual berasingan untuk subkelas, termasuk semua lajur kelas induk. table-per-class: Cipta jadual berasingan untuk subkelas, yang mengandungi hanya lajur khusus subkelas. union-subclass: serupa dengan joined-subclass, tetapi jadual kelas induk menggabungkan semua lajur subclass.

iOS 18 menambah fungsi album 'Dipulihkan' baharu untuk mendapatkan semula foto yang hilang atau rosak iOS 18 menambah fungsi album 'Dipulihkan' baharu untuk mendapatkan semula foto yang hilang atau rosak Jul 18, 2024 am 05:48 AM

Keluaran terbaharu Apple bagi sistem iOS18, iPadOS18 dan macOS Sequoia telah menambah ciri penting pada aplikasi Photos, yang direka untuk membantu pengguna memulihkan foto dan video yang hilang atau rosak dengan mudah disebabkan pelbagai sebab. Ciri baharu ini memperkenalkan album yang dipanggil "Dipulihkan" dalam bahagian Alat pada apl Foto yang akan muncul secara automatik apabila pengguna mempunyai gambar atau video pada peranti mereka yang bukan sebahagian daripada pustaka foto mereka. Kemunculan album "Dipulihkan" menyediakan penyelesaian untuk foto dan video yang hilang akibat kerosakan pangkalan data, aplikasi kamera tidak disimpan ke pustaka foto dengan betul, atau aplikasi pihak ketiga yang menguruskan pustaka foto. Pengguna hanya memerlukan beberapa langkah mudah

Apr 09, 2024 pm 12:36 PM

HTML tidak boleh membaca pangkalan data secara langsung, tetapi ia boleh dicapai melalui JavaScript dan AJAX. Langkah-langkah termasuk mewujudkan sambungan pangkalan data, menghantar pertanyaan, memproses respons dan mengemas kini halaman. Artikel ini menyediakan contoh praktikal menggunakan JavaScript, AJAX dan PHP untuk membaca data daripada pangkalan data MySQL, menunjukkan cara untuk memaparkan hasil pertanyaan secara dinamik dalam halaman HTML. Contoh ini menggunakan XMLHttpRequest untuk mewujudkan sambungan pangkalan data, menghantar pertanyaan dan memproses respons, dengan itu mengisi data ke dalam elemen halaman dan merealisasikan fungsi HTML membaca pangkalan data.

Analisis prinsip asas sistem pengurusan pangkalan data MySQL Analisis prinsip asas sistem pengurusan pangkalan data MySQL Mar 25, 2024 pm 12:42 PM

Analisis prinsip asas sistem pengurusan pangkalan data MySQL MySQL ialah sistem pengurusan pangkalan data hubungan yang biasa digunakan yang menggunakan bahasa pertanyaan berstruktur (SQL) untuk penyimpanan dan pengurusan data. Artikel ini akan memperkenalkan prinsip asas sistem pengurusan pangkalan data MySQL, termasuk penciptaan pangkalan data, reka bentuk jadual data, penambahan data, pemadaman, pengubahsuaian dan operasi lain, dan menyediakan contoh kod khusus. 1. Penciptaan Pangkalan Data Dalam MySQL, anda perlu mencipta contoh pangkalan data untuk menyimpan data. Kod berikut boleh mencipta fail bernama "my

Petua dan amalan untuk mengendalikan aksara Cina bercelaru dalam pangkalan data dengan PHP Petua dan amalan untuk mengendalikan aksara Cina bercelaru dalam pangkalan data dengan PHP Mar 27, 2024 pm 05:21 PM

PHP ialah bahasa pengaturcaraan bahagian belakang yang digunakan secara meluas dalam pembangunan laman web Ia mempunyai fungsi operasi pangkalan data yang kuat dan sering digunakan untuk berinteraksi dengan pangkalan data seperti MySQL. Walau bagaimanapun, disebabkan kerumitan pengekodan aksara Cina, masalah sering timbul apabila berurusan dengan aksara Cina bercelaru dalam pangkalan data. Artikel ini akan memperkenalkan kemahiran dan amalan PHP dalam mengendalikan aksara bercelaru bahasa Cina dalam pangkalan data, termasuk punca biasa aksara bercelaru, penyelesaian dan contoh kod khusus. Sebab biasa aksara bercelaru ialah tetapan set aksara pangkalan data yang salah: set aksara yang betul perlu dipilih semasa mencipta pangkalan data, seperti utf8 atau u

Bagaimana untuk mengendalikan ralat sambungan pangkalan data dalam PHP Bagaimana untuk mengendalikan ralat sambungan pangkalan data dalam PHP Jun 05, 2024 pm 02:16 PM

Untuk mengendalikan ralat sambungan pangkalan data dalam PHP, anda boleh menggunakan langkah berikut: Gunakan mysqli_connect_errno() untuk mendapatkan kod ralat. Gunakan mysqli_connect_error() untuk mendapatkan mesej ralat. Dengan menangkap dan mengelog mesej ralat ini, isu sambungan pangkalan data boleh dikenal pasti dan diselesaikan dengan mudah, memastikan kelancaran aplikasi anda.

See all articles