أكثر

كيف يمكنني استخدام mdsys.sdo_geometry الخاص بـ Oracle Locator مع ArcSDE؟

كيف يمكنني استخدام mdsys.sdo_geometry الخاص بـ Oracle Locator مع ArcSDE؟


أنا أستخدم نوع Oracle Locator MDSYS.SDO_Geometry لتخزين معلوماتي المكانية ثم الوصول إليها من خلال ArcSDE. أنا في حيرة من أمري حول كيفية استخدام مكون الدقة للبيانات الوصفية وبشكل أكثر تحديدًا كيفية ارتباطه بدقة GPS.

ما هو الحد الأقصى للدقة التي يمكنني استخدامها مع ArcSDE؟

هذه عينة من الكود الخاص بي:

إنشاء تسلسل لعمود معرف الكائن (OID)

إنشاء SEQUENCE seq_myTable_oid MINVALUE 0 MAXVALUE 99999999 START WITH 1 INCREMENT BY 1 CACHE 20؛

اصنع جدول

إنشاء جدول myTable (المعرف INT NOT NULL ، geom MDSYS.SDO_GEOMETRY NOT NULL ، oid INT NOT NULL) ؛ ALTER TABLE myTable ADD CONSTRAINT pk_myTable PRIMARY KEY (id) ؛

إنشاء مشغل الإدراج في myTable لـ OID

أنشئ أو استبدل المشغل myTable_i قبل الإدراج في كل صف إعلان ابدأ حدد seq_myTable_oid.NEXTVAL INTO: new.oid FROM DUAL ؛ نهاية؛ /

أدخل بيانات تعريف geom لـ myTable

أدخل قيم USER_SDO_GEOM_METADATA ('MYTABLE'، 'GEOM'، MDSYS.SDO_DIM_ARRAY (MDSYS.SDO_DIM_ELEMENT ('X'، -180، 180، 0.00005)، MDSYS.SDO_DYS_ELEMENT ('Y'، -590، 90، .SDO_DIM_ELEMENT ('Z'، -10000، 100000، 1))، 4326) ؛

إنشاء فهرس مكاني على الجدول

إنشاء فهرس sp_idx_myTable_geom على myTable (geom) INDEXTYPE IS MDSYS.SPATIAL_INDEX ؛

سجل الجدول مع SDE

sdelayer -o Register -l myTable، geom -C oid، USER -t SDO_GEOMETRY -P HIGH -e l3 -s serverName -i مثيل -u userName -p password

لست متأكدًا من الدقة القصوى المتاحة في ArcSDE ولكن هذه كانت نقطة مؤلمة بالنسبة لي لسنوات. كما أفهمها ، فإن دقة oracle و arcsde هما شيئان مختلفان تمامًا. سيقرأ عملاء ArcSDE (على سبيل المثال Arcmap) الدقة التي تم تحديدها في بيانات ArcSDE التعريفية - وعلى وجه الخصوص في جدول SDE.SPATIAL_REFERENCES ، في الحقول XYUNITS و ZUNITS و MUNITS.

هذا يعني على سبيل المثال أنه يمكنك تخزين بياناتك في أوراكل في 5 منازل عشرية أو أكثر ولكن إذا تم ضبط XYUNITS على 1 ، فإن Arcmap سيعرض فقط (على سبيل المثال في نافذة خصائص الرسم) عددًا صحيحًا! المشكلة هي أن XYUnits يتم تعيينها تلقائيًا عند تسجيل جدول Oracle أو العرض باستخدام بعض العمليات الحسابية التي لا أعرف عنها. إذا قام شخص آخر بذلك ، سأكون مهتمًا جدًا بمعرفة ذلك! منذ العصور ، عثرت على مستند يشرح كيفية حساب ArcSDE لهذا الرقم ولكن لم أجده منذ ذلك الحين ...

في الماضي عندما كنت أرغب في تغيير الدقة التي يقدمها ArcSDE ، انتهى بي الأمر بتغيير وحدات XYUnits (أو وحدات M / Z) إلى مجرد `` قيمة كبيرة '' اعتباطية تمامًا ولكن يبدو أنها تعمل


تمثل قيمة الدقة (أو التفاوت) من Oracle أكبر مسافة ممكنة بين نقطتين ليتم اعتبارهما متساويين من قِبل مشغلي Oracle المكانيين. بينما يمكنك محاولة ضبطه بناءً على دقة جهاز GPS ، فقد لا يكون ذلك ممارسة جيدة لأن دقة GPS ستختلف بناءً على الظروف والأجهزة المستخدمة عند جمع البيانات ، لكن قيمة التفاوت في البيانات الوصفية ستحتاج لتكون متسقة لمجموعة البيانات بأكملها. سيكون من الأفضل تعيين التفاوت بناءً على مدى القرب الذي تتوقع أن تحصل عليه نقاط البيانات الخاصة بك ولا تزال تعتبر مواقع منفصلة.

بناءً على ما أفهمه ، لا يستخدم ArcSDE عوامل التشغيل المكانية في Oracle Spatial (يستخدم فقط SDO_GEOMETRY للتخزين) ، لذلك لن تهمك قيمة التفاوت إلا إذا كنت تخطط لمعالجة البيانات خارج SDE. على حد علمي ، ليس لدى ESRI أي قيود على نطاق التفاوتات التي يمكن استخدامها مع ArcSDE (لكن كن على علم بأن ArcSDE قد لا يستخدم دقة Oracle ، كما ذكر mapoholic).


تحويل لامبرت إلى WGS84 (الترميز الجغرافي + محدد موقع أوراكل)

أنا حاليًا أقوم بربط عناوين الترميز الجغرافي في النمسا. من رمز بريدي معين وشارع وما إلى ذلك ، أريد العثور تلقائيًا على خطوط الطول والعرض بتنسيق WGS84. كان أسلوبي الأول هو استخدام خدمة ويب مثل OpenStreetMaps Nominatim. في الواقع هذا يعطي نتائج جيدة.

لا يزال هو عليه إلزامي لاستخدام قرص مع عناوين (PAC) وتحديد الموقع الجغرافي الخاص بهم كحقيقة أساسية. فقط إذا لم أتمكن من مطابقة العنوان ضمن هذه البيانات ، يمكنني استخدام نهج خدمة الويب كحل للنسخ الاحتياطي.

الكثير من أجل السياق ، المشكلة الآن: على هذا القرص ، تم تحديد موقع الهلام كـ X_LAMBERT و Y_LAMBERT ولا يمكنني معرفة كيفية التحويل إلى خط عرض + خط طول.

يتم تحميل بيانات diks في قاعدة بيانات Oracle 11g باستخدام محدد المواقع وأنا أفعل ما يلي:

الخطوة 1: إنشاء كائن الهندسة المكانية: MDSYS.SDO_GEOMETRY (2003،31287، NULL، MDSYS.SDO_ELEM_INFO_ARRAY (1،1003،1)، MDSYS.SDO_ORDINATE_ARRAY (X_LAMBERT، Y_LAMBERT))

الخطوة 2: الإسقاط من WGS84 إلى LatLng: SDO_CS.TRANSFORM (GEOMETRY ، 4326) في عميل Java الخاص بي أحصل على خطوط الطول والعرض من الهندسة عبر oracle.spatial.geometry.JGeometry.

ملحوظة: أظن أن 31287 هو SRID بتنسيق لامبرت ، لقد جربت 8307 و 3416 ، لكن الأخير أعطي نتائج أسوأ. تعمل الخطوة 2 بشكل جيد مع كائنات هندسية أخرى ، حيث أعرف SRID الصحيح بالتأكيد. لذلك أعتقد أن الخطأ موجود في مكان ما في الخطوة 1.

هل يجب علي تعيين شيء ما في USER_SDO_GEOM_METADATA؟ استخدام خاطئ لمُنشئ SDO_GEOMETRY؟ هل ما زلت أخلط الإسناد والإسقاط؟ ربما يمكنك أن تنورني هناك أيضًا.

نتيجة عملي ومثال المدخلات هي:

الإدخال: X_LAMBERT 602823، Y_LAMBERT 464397 الناتج الناتج: WGS84 (48.0469757028535، 16.0542604612583) الإخراج المتوقع: WGS84 (48.546363، 16.085735)


3 إجابات 3

يبدو أن كسر الاستعلام باستخدام استعلام داخلي واتحاد يجبر أوراكل على استخدام الفهارس كما هو متوقع:

"في ملاحظة جانبية ، ينتج عن إصدار db قيد التشغيل أوراكل للمؤسسات خطة يتم فيها استخدام الفهرس ودمج النتائج. هل يمكن القيام بذلك مع الإصدار القياسي؟"

لإكمال الإجابة: يدعم Enterprise Edition تقنيات فهرسة الصور النقطية. في كثير من الأحيان عندما يكون للمحسن الاختيار بين استخدام فهارس متعددة (أو هنا نفس الفهرس المكاني للعديد من المسندات) ، فإنه يستخدم كلاهما.

يقوم بذلك عن طريق الحصول على النتائج من كل مسند (مجموعة من ROWIDs) وتحويله في صورة نقطية. يصبح من السهل بعد ذلك دمج هذه الصور النقطية (هنا من ORing) واستخراج النتيجة مرة أخرى في قائمة ROWIDs لجلب النتائج الفعلية.

هذا غير موجود في الإصدار القياسي. الخيار الوحيد للمحسن هو استخدام واحد للفهرس (للاستعلام الذي يجمع بين العديد من المسندات في شرط AND) ، أو مجرد إجراء مسح كامل للجدول باستخدام OR (نظرًا لأن شرط OR يجعل شرط الاستعلام انتقائيًا قليلًا جدًا) .

يعد استبدال شرط OR بـ UNION ALL هو الأسلوب الصحيح: لدينا الآن استعلامان تم تحسينهما بشكل مستقل ، وسيستخدم كلاهما الفهرس المكاني.


كيف يستخدم ArcSDE Oracle Spatial؟

جعل Oracle Spatial مخطط الهندسة الافتراضي الخاص بك

عند تثبيت مكون 9.3 ArcSDE لأول مرة ، يكون ST_Geometry هو نوع التخزين الهندسي الافتراضي. يتم تحديد الإعدادات الافتراضية لتخزين ArcSDE في جدول DBTUNE بواسطة معلمات GEOMETRY_STORAGE.

من السهل تغيير التخزين الهندسي الافتراضي لـ ArcSDE لاستخدام Oracle Spatial. بالنسبة للكلمة الأساسية DEFAULTS ، قم بتغيير المعامل GEOMETRY_STORAGE من ST_GEOMETRY إلى SDO_GEOMETRY. بعد تغيير الإعداد الافتراضي GEOMETRY_STORAGE إلى SDO_GEOMETRY ، يقوم ArcSDE بإنشاء فئات معالم بأعمدة SDO_GEOMETRY افتراضيًا.

ملاحظة: استخدم أمر الإدارة sdedbtune لتغيير إعدادات DBTUNE. للحصول على تفاصيل حول استخدام الأمر sdedbtune ، راجع مرجع أوامر إدارة ArcSDE المثبت مع ArcSDE.

يدعم ArcSDE for Oracle عددًا من مخططات التخزين الهندسي المختلفة & # 8212 يمكن استخدام جميع هذه المخططات المختلفة معًا في نفس قاعدة البيانات. بينما لا يمكن أن يكون هناك سوى مخطط هندسي افتراضي واحد ، يمكن إنشاء جداول فردية باستخدام مخططات هندسية مختلفة.

إذا كنت تريد تخزين بعض فئات الميزات فقط باستخدام النوع المكاني لتخزين Oracle ، فيمكنك تحديد الكلمة الأساسية SDO_GEOMETRY عند إنشاء فئة الميزة. إذا قمت بذلك ، فسيتم إنشاء فئة الميزة هذه بعمود SDO_GEOMETRY. في ملف dbtune ، تظهر الكلمة الأساسية SDO_GEOMETRY على النحو التالي:

ماذا يحدث عند إنشاء فئات ميزات باستخدام التخزين الهندسي SDO_GEOMETRY

عند إنشاء فئة ميزة باستخدام تخزين SDO_GEOMETRY ، يحدث ما يلي:

    تتم إضافة عمود SDO_GEOMETRY إلى جدول الأعمال الخاص بفئة المعالم.

يقوم ArcSDE بإنشاء فئة معلم عن طريق إضافة عمود هندسة إلى جدول الأعمال المحدد. عند تعيين معلمة GEOMETRY_STORAGE على SDO_GEOMETRY ، يضيف ArcSDE عمود SDO_GEOMETRY إلى جدول الأعمال. في هذا المثال ، يحتوي جدول الأعمال المسمى البلدان على خصائص الاسم والسكان - بعد إضافة عمود الهندسة ، يحتوي أيضًا على عمود SDO_GEOMETRY يسمى الحدود. إذا لزم الأمر ، تتم إضافة عمود معرف ميزة فريد (يسمى OBJECTID في المثال التالي) وملؤه.

* NVARCHAR2 (32) في حالة استخدام سلاسل Unicode

يمكن إضافة عمود الهندسة إلى جدول الأعمال باستخدام ArcCatalog أو أداة إدارة sdelayer أو ArcSDE C و Java APIs.

عند إضافة عمود SDO_GEOMETRY إلى جدول الأعمال ، يتم عادةً إنشاء فهرس مكاني على هذا العمود الهندسي. بشكل افتراضي ، يقوم ArcSDE بإنشاء فهرس R-tree في عمود SDO_GEOMETRY. (سوف يدعم ArcSDE أيضًا إنشاء فهارس Oracle Spatial Fixed و Hybrid ، ولكن لم تعد Oracle موصى بها بشكل عام.) بدلاً من ذلك ، يمكن لـ ArcSDE إنشاء فئات معالم بدون فهرس مكاني ومع ذلك ، لا يمكن دعم الاستعلامات المكانية حتى يتم إنشاء فهرس مكاني. يتطلب SDO_FILTER من Oracle ، المستخدم بواسطة ArcSDE ، وجود فهرس مكاني.

يمكنك إنشاء فهرس مكاني بعدة طرق & # 8212in ArcCatalog باستخدام الأداة المساعدة لإدارة sdelayer باستخدام Oracle Spatial Index Advisor باستخدام SQL أو باستخدام ArcSDE C و Java APIs برمجيًا.

يقوم ArcSDE تلقائيًا بإسقاط وإعادة إنشاء فهارس Oracle Spatial التي تم إنشاؤها بواسطة ArcSDE عندما يتم تبديل فئة المعالم بين الوضع LOAD_ONLY_IO و NORMAL_IO. لا يتم إسقاط الفهارس المكانية التي تم تحديدها بواسطة تطبيق Oracle Spatial Index Advisor أو التي تم إنشاؤها باستخدام SQL عندما يقوم ArcSDE بتبديل فئة المعالم إلى وضع LOAD_ONLY_IO.

عندما يضيف ArcSDE عمود SDO_GEOMETRY إلى جدول أعمال ، فإنه يضيف أيضًا سجل بيانات تعريف Oracle Spatial المطلوب إلى طريقة عرض USER_SDO_GEOM_METADATA. تتضمن هذه البيانات الوصفية اسم الجدول ، واسم العمود SDO_GEOMETRY ، ومعرف المرجع المكاني ، ومعلومات أبعاد الإحداثيات.

إذا تم استخدام تطبيق جهة خارجية أو SQL لإنشاء الجدول والعمود المكاني وبيانات التعريف الخاصة به ، ثم تم تسجيل الجدول في ArcSDE ، فلن يحذف ArcSDE البيانات التعريفية عند إلغاء تسجيل الجدول باستخدام ArcSDE. ومع ذلك ، فإن ArcSDE سيحذف دائمًا البيانات الأولية عند حذف الجدول ، كما هو الحال مع الأمر sdetable -o delete.

يمكنك إنشاء هندسة ArcSDE على هيئة ثنائية الأبعاد (س / ص) أو ثنائية الأبعاد بمقاييس أو ثلاثية الأبعاد (س / ص / ع) أو ثلاثية الأبعاد باستخدام القياسات. عند إنشاء فئات معالم جديدة أو إضافة عمود SDO_GEOMETRY إلى جدول موجود ، يضع ArcSDE معلومات أبعاد Oracle Spatial في عمود DIMINFO لعرض البيانات التعريفية.

    الإحداثي x هو البعد الأول.

يوفر Oracle Spatial مراجع إحداثيات محددة مسبقًا في جدول MDSYS.CS_SRS. عند استخدام ArcSDE لإنشاء فئة معالم جديدة ، لتعيين SRID محدد لعمود SDO_GEOMETRY ، حدد وصف مرجع إحداثيات Oracle Spatial المناسب ، ثم قم بتعيين معلمة تخزين SDO_SRID DBTUNE لفئة الميزة إلى تلك القيمة. على سبيل المثال:

إذا لم يتم تعيين معلمة تخزين SDO_SRID ، يقوم ArcSDE بتعيين SRID لكل قيمة SDO_GEOMETRY إلى NULL ، بالإضافة إلى SRID في سجل البيانات التعريفية المقابل.

لا يتطلب ArcSDE Oracle Spatial SRID. يحتفظ ArcSDE بالمعلومات المرجعية الإحداثية لكل فئة معلم في جدول SPATIAL_REFERENCES الخاص به بشكل مستقل عن Oracle Spatial.

استشر دليل ومراجع مستخدم Oracle Spatial للحصول على معلومات حول مراجع التنسيق المدعومة.

عند تخزين الأشكال الهندسية في قاعدة البيانات ، يملأ ArcSDE قيمة SDO_GEOMETRY من كائن ArcSDE API يسمى SE_SHAPE. يمكن أن يحتوي كائن SE_SHAPE على هندسة بسيطة ومعقدة قد تتضمن الارتفاعات والقياسات وبيانات CAD والتعليقات التوضيحية وتصحيحات السطح. يدعم نوع البيانات SDO_GEOMETRY مجموعة فرعية من هذه الخصائص الهندسية. نظرًا لعدم وجود تعيين واحد لواحد للمكونات في SDO_GEOMETRY وكائن SE_SHAPE ، يتبع ArcSDE مجموعة من القواعد عند تخزين بيانات ArcSDE في جداول Oracle Spatial.

    قم بإنشاء SDO_GTYPE المكون من أربعة أرقام بناءً على نوع كيان الهندسة.

ملاحظة: لا يدعم ArcSDE مجموعة الهندسة غير المتجانسة في كائن SDO_GEOMETRY ، ولا يقوم ArcSDE بتشفير عناصر SDO_ETYPE 0 في كائن SDO_GEOMETRY. عناصر SDO_ETYPE 0 خاصة بالتطبيق. راجع "اعتبارات إمكانية التشغيل المتداخل" أدناه للحصول على مزيد من المعلومات.

لا يمكن لنوع SDO_GEOMETRY تخزين جميع أنواع العناصر الهندسية التي يجب أن يدعمها تخزين ArcSDE. عندما يكون التخزين لهذه العناصر مطلوبًا (كما هو محدد من علامات نوع الهندسة المحددة عند إنشاء فئة المعالم) ، يضيف ArcSDE عمودًا يسمى SE_ANNO_CAD_DATA إلى جدول الأعمال. باستخدام مثال فئة ميزة المقاطعات من أعلاه ، سيحتوي جدول الأعمال الآن على ما يلي:

* NVARCHAR2 (32) في حالة استخدام سلاسل Unicode

عندما يكتشف ArcSDE أن مصدر البيانات يحتوي على بيانات CAD ، يكتب ArcSDE تمثيلًا هندسيًا بسيطًا لبيانات CAD في قيمة SDO_GEOMETRY ويكتب بيانات CAD غير المعدلة في قيمة SE_ANNO_CAD_DATA. إذا كان مصدر البيانات لا يحتوي على بيانات CAD ، يقوم ArcSDE بتعيين قيمة SE_ANNO_CAD_DATA إلى NULL.

تحتوي خاصية SE_ANNO_CAD_DATA على بيانات من العديد من مكونات ArcGIS:

    بيانات AutoCAD أو MicroStation من ArcSDE CAD Client

يستخدم ArcSDE وظيفة Oracle Spatial SDO_FILTER لإجراء الاستعلام المكاني الأساسي. يقوم ArcSDE بإجراء تصفية ثانوية لـ SDO_GEOMETRY بناءً على العلاقة المكانية التي يطلبها التطبيق.


لا يمكن نشر Composite Locator على ArcGIS Server 10.2.2

لا يمكنني نشر محدد موقع مركب من 10.0 SP5 ArcSDE Geodatabase (Oracle) إلى ArcGIS Server 10.2.2. لتضييق نطاق المشكلة ، قمت بإنشاء محدد موقع مركب جديد مع محدد موقع مكون واحد فقط لإبقائه بسيطًا قدر الإمكان. أنا قادر على نشر محدد موقع المكون بنجاح ولكن ليس المركب.

عند النشر ، يكون التغليف ناجحًا وبعد ذلك في نهاية العملية أتلقى الرسالة "فشل نشر الخدمة". في سجلات ArcGIS Server ، أحصل على الأخطاء أدناه:

ومع ذلك فأنا قادر على إنشاء ملف .sd. إذا حاولت تحميله على الخادم باستخدام أداة تحميل تعريف الخدمة GP ، فسأحصل على نفس الخطأ المذكور أعلاه.

أقوم بنشر الخدمة من خلال اتصال "المالك" بـ SDE ، لذا يجب ألا تكون الامتيازات مشكلة. أيضًا ، تتم الإشارة إلى محدد موقع المكون في المركب عبر اتصال المالك أيضًا.

لقد سجلت مصدر بيانات SDE بشكل صحيح ولم أحصل على أي رسائل مشبوهة أثناء خطوة التحليل. الرسالة الوحيدة هي أنه سيتم نسخ محدد المواقع المركب إلى الخادم وهو أمر طبيعي حيث يتم نسخها دائمًا إلى الخادم.

أنا قادر على نشر نفس محدد المواقع المركب مع نسخة من البيانات من قاعدة بيانات جغرافية ملف 10.2 لذا يبدو أنها مجرد مشكلة SDE / ArcGIS 10.2.2.

لقد قمت أيضًا بنشر نفس السؤال على GIS StackExchange حتى تتمكن من الإجابة هناك إذا كنت تفضل ذلك.


لا يمكن نشر Composite Locator على ArcGIS Server 10.2.2

لا يمكنني نشر محدد موقع مركب من 10.0 SP5 ArcSDE Geodatabase (Oracle) إلى ArcGIS Server 10.2.2. لتضييق نطاق المشكلة ، قمت بإنشاء محدد موقع مركب جديد مع محدد موقع مكون واحد فقط لإبقائه بسيطًا قدر الإمكان. أنا قادر على نشر محدد موقع المكون بنجاح ولكن ليس المركب.

عند النشر ، يكون التغليف ناجحًا وبعد ذلك في نهاية العملية أتلقى الرسالة "فشل نشر الخدمة". في سجلات ArcGIS Server ، أحصل على الأخطاء أدناه:

ومع ذلك فأنا قادر على إنشاء ملف .sd. إذا حاولت تحميله على الخادم باستخدام أداة تحميل تعريف الخدمة GP ، فسأحصل على نفس الخطأ المذكور أعلاه.

أقوم بنشر الخدمة من خلال اتصال "المالك" بـ SDE ، لذا يجب ألا تكون الامتيازات مشكلة. أيضًا ، تتم الإشارة إلى محدد موقع المكون في المركب عبر اتصال المالك أيضًا.

لقد سجلت مصدر بيانات SDE بشكل صحيح ولم أحصل على أي رسائل مشبوهة أثناء خطوة التحليل. الرسالة الوحيدة هي أنه سيتم نسخ محدد المواقع المركب إلى الخادم وهو أمر طبيعي حيث يتم نسخها دائمًا إلى الخادم.

أنا قادر على نشر نفس محدد المواقع المركب مع نسخة من البيانات من قاعدة بيانات جغرافية ملف 10.2 لذا يبدو أنها مجرد مشكلة SDE / ArcGIS 10.2.2.

لقد قمت أيضًا بنشر نفس السؤال على GIS StackExchange حتى تتمكن من الإجابة هناك إذا كنت تفضل ذلك.


SDO_CS.CONVERT_XML_TO_NTV2

يحول تمثيل Oracle Spatial XML لشبكة NTv2 (الإصدار 2 من التحويل الوطني) إلى تنسيق NTv2 ASCII.

مستند XML يحتوي على تمثيل Oracle Spatial XML لشبكة NTv2.

إخراج كائن CLOB يحتوي على قيم شبكة NTv2.

لتحويل شبكة NTv2 بتنسيق ASCII إلى تمثيل Oracle Spatial XML ، استخدم الإجراء SDO_CS.CONVERT_NTV2_TO_XML.

يحول المثال التالي شبكة NTv2 بتنسيق ASCII إلى تمثيل Oracle Spatial XML ، ويحول تمثيل XML الناتج مرة أخرى إلى تمثيل NTv2 ASCII ، ويعرض تمثيل ASCII الناتج. (يتم عرض جزء فقط من الإخراج.)


الكيفية: ضبط الفهرس المكاني للشبكة متعدد المستويات

يتم استخدام الفهرس المكاني لإجراء عمليات بحث جغرافية سريعة عن المعالم في فئة المعالم. يستخدم ArcSDE فهرسًا مكانيًا للشبكة متعدد المستويات لفئات المعالم في العديد من أنواع التخزين الهندسي ، بما في ذلك الثنائي المضغوط (LOB أو LONG RAW أو BINARY) OGC-WKB و DB2 Spatial Extender والنوع المكاني لـ Oracle. قد يؤدي ضبط حجم شبكة الفهرس المكاني إلى تحسين أداء الاستعلامات المكانية. توفر هذه المقالة بعض المعلومات الأساسية حول الفهرس المكاني للشبكة متعدد المستويات ، كما تقدم تلميحات حول ضبطه.

يحدد الفهرس المكاني للشبكة متعدد المستويات شبكة خيالية X / Y. قد تكون هناك شبكة تخيلية واحدة أو اثنتان أو ثلاث شبكات ، تُعرف أيضًا بمستويات الشبكة ، محددة لكل فئة معلم. تحتاج معظم فئات الميزات إلى مستوى شبكة واحد فقط ، ولكن قد تكون هناك حاجة إلى المزيد من المستويات إذا كان متوسط ​​أحجام مغلفات الميزات يختلف اختلافًا كبيرًا. تتم فهرسة كل ميزة باستخدام مستوى واحد فقط من مستويات الشبكة: ميزات صغيرة في المستوى الأول وميزات أكبر في المستوى الثاني أو الثالث ، إن وجدت. يضع ArcSDE إدخالًا أو صفًا في الفهرس المكاني لكل مثيل حيث تتقاطع معلم واحد مع خلية واحدة في مستوى الشبكة المحدد المستخدم لتلك الميزة.

أثناء عملية التصفية الأولية للاستعلام المكاني ، يجد ArcSDE مغلف X / Y لشكل المرشح المكاني ويحدد خلية شبكة الفهرس المكاني التي تتقاطع مع ذلك المغلف. بعد ذلك ، يقوم ArcSDE بتنفيذ استعلام لإرجاع جميع المعالم التي تتقاطع مغلفاتها أيضًا مع خلايا الشبكة هذه. نتائج عملية التصفية الأولية هذه هي الميزات المرشحة. لاحقًا ، تقلل التصفية الثانوية مجموعة النتائج إلى الميزات المرشحة فقط التي تفي بالشروط الدقيقة للاستعلام المكاني ، مثل & # 39intersects & # 39 أو & # 39crosses & # 39 أو & # 39 داخل & # 39.

يعني ضبط الفهرس المكاني موازنة انتقائية عملية المرشح الأولية مقابل تقليل عدد المدخلات في الفهرس المكاني. تكلفة كل ميزة للمرشح الأساسي أقل بكثير من الفلتر الثانوي ، لأن المرشح الثانوي يقوم بحسابات مفصلة بينما يكون المرشح الأساسي استعلامًا بسيطًا في جدول الفهرس المكاني. عادةً ما تكون نتيجة تحديد حجم خلية شبكة أصغر هو المزيد من الإدخالات في جدول الفهرس المكاني وانتقائية أدق من عملية المرشح الأساسي. هذا يعني أن المرشح المكاني الثانوي يجب أن يفحص ميزات أقل. ومع ذلك ، فإن المزيد من إدخالات الفهرس المكاني تزيد أيضًا من حجم الفهرس المكاني ، وبالتالي تبطئ عملية المرشح الأساسي وتستهلك مساحة أكبر في قاعدة البيانات.

لحسن الحظ ، يوفر ArcSDE إحصائيات حول الفهرس المكاني والذي يمكن ، جنبًا إلى جنب مع اختبار الأداء ، تسهيل عملية الضبط. الأمر & # 39sdelayer -o si_stats & # 39 هو الأداة الأساسية للإبلاغ عن إحصائيات شبكة الفهرس المكاني المستخدمة لضبط الفهرس المكاني. فيما يلي مثال على إخراج هذا الأمر:


أنواع البيانات الهندسية

كما هو موضح في الجدول ، يقوم ArcGIS بإنشاء ثلاثة أنواع بيانات هندسية والعمل معها في Oracle: Esri ST_Geometry و Oracle SDO_Geometry وثنائي مضغوط. لا يمكن استخدام التخزين الهندسي الثنائي المضغوط إلا في قواعد البيانات الجغرافية.

قياس ST_Geometry

فيما يلي وصف عام لنوع البيانات المكانية ST_Geometry. للحصول على معلومات خاصة بتنفيذ Oracle ، راجع ST_Geometry في Oracle.

يقوم نوع بيانات ST_Geometry بتنفيذ مواصفات SQL 3 لأنواع البيانات المعرفة من قبل المستخدم (UDTs) ، مما يسمح لك بإنشاء أعمدة قادرة على تخزين البيانات المكانية مثل موقع معلم أو شارع أو قطعة أرض. توفر المنظمة الدولية للمعايير (ISO) و Open Geospatial Consortium، Inc. (OGC) إمكانية الوصول إلى قاعدة البيانات الجغرافية وقاعدة البيانات. يعمل هذا التخزين على توسيع إمكانيات قاعدة البيانات من خلال توفير تخزين للكائنات (النقاط والخطوط والمضلعات) التي تمثل المعالم الجغرافية. تم تصميمه لتحقيق الاستخدام الفعال لموارد قاعدة البيانات ، ليكون متوافقًا مع ميزات قاعدة البيانات مثل النسخ والتقسيم ، ولإتاحة الوصول السريع إلى البيانات المكانية.

على الرغم من أنه يمكنك تحديد عمود كنوع ST_Geometry ، لا تقوم بإدراج قيم ST_Geometry في العمود حيث لا يمكن إنشاء مثيل لها. بدلاً من ذلك ، تقوم بإدراج قيم الفئة الفرعية.

ST_Geometry نفسها هي فئة فائقة مجردة غير مثبتة. ومع ذلك ، يمكن إنشاء مثيل للفئات الفرعية الخاصة به. نوع البيانات الذي تم إنشاء مثيل له هو النوع الذي يمكن تعريفه كعمود جدول ويتم إدراج قيم من نوعه فيه.

يوضح المخطط التالي التسلسل الهرمي لنوع بيانات ST_Geometry والفئات الفرعية الخاصة به.

تنقسم الفئات الفرعية لـ ST_Geometry إلى فئتين: الفئات الفرعية للهندسة الأساسية والفئات الفرعية للمجموعة المتجانسة. تتضمن الأشكال الهندسية الأساسية ST_Point و ST_LineString و ST_Polygon ، بينما تتضمن المجموعات المتجانسة ST_MultiPoint و ST_MultiLineString و ST_MultiPolygon. كما توحي الأسماء ، فإن المجموعات المتجانسة هي مجموعات من الأشكال الهندسية الأساسية. بالإضافة إلى مشاركة خصائص الهندسة الأساسية ، فإن المجموعات المتجانسة لها بعض خصائصها الخاصة.

تخزن كل فئة فرعية نوع الهندسة التي يشير إليها اسمها على سبيل المثال ، ST_MultiPoint تخزن نقاطًا متعددة. قائمة الفئات الفرعية وأوصافها في الجدول التالي:

  • هندسة ذات أبعاد صفرية تشغل موقعًا واحدًا في مساحة إحداثيات.
  • لها قيمة إحداثي x و y واحدة ، ودائمًا ما تكون بسيطة ولها حدود NULL.
  • كائن أحادي البعد يتم تخزينه كسلسلة من النقاط تحدد مسار محرف خطي.
  • ST_Line سلاسل لها أطوال.
  • تعتبر ST_LineString بسيطة إذا لم تتقاطع مع الجزء الداخلي.
  • تشغل نقاط النهاية (الحدود) لسلسلة ST_LineString المغلقة نفس النقطة في الفراغ.
  • ST_LineString عبارة عن حلقة إذا كانت مغلقة وبسيطة.
  • تشكل نقاط النهاية عادةً حدود ST_LineString ما لم يتم إغلاق ST_LineString ، وفي هذه الحالة تكون الحدود NULL.
  • الجزء الداخلي من ST_LineString هو المسار المتصل الذي يقع بين نقاط النهاية ، ما لم يكن مغلقًا ، وفي هذه الحالة يكون الجزء الداخلي مستمرًا.
  • سطح ثنائي الأبعاد مخزّن كسلسلة من النقاط التي تحدد الحلقة المحيطية الخارجية وصفرًا أو أكثر من الحلقات الداخلية.
  • يحتوي ST_Polygon على مساحة وهو دائمًا بسيط.
  • تحدد الحلقات الخارجية وأي حلقات داخلية حدود ST_Polygon ، والمساحة المغلقة بين الحلقات تحدد الجزء الداخلي لـ ST_Polygon.
  • يمكن أن تتقاطع حلقات مضلع ST_Polygon عند نقطة تماس ولكن لا تتقاطع أبدًا.
  • مجموعة من ST_Points.
  • لها أبعاد 0.
  • تعتبر ST_MultiPoint بسيطة إذا لم يكن أي من عناصرها يشغل نفس مساحة الإحداثيات.
  • حدود ST_MultiPoint هي NULL.
  • مجموعة من ST_LineStrings.
  • ST_MultiLineStrings لها الطول.
  • تكون سلاسل ST_MultiLineString بسيطة إذا كانت تتقاطع فقط عند نقاط نهاية عناصر ST_LineString.
  • ST_MultiLineString ليست بسيطة إذا تقاطعت الأجزاء الداخلية لعناصر ST_LineString.
  • حدود ST_MultiLineString هي نقاط النهاية غير المتقاطعة لعناصر ST_LineString.
  • يتم إغلاق ST_MultiLineString إذا تم إغلاق جميع عناصر ST_LineString الخاصة بها.
  • تكون حدود ST_MultiLineString فارغة إذا تم تقاطع جميع نقاط النهاية لجميع العناصر.
  • مجموعة من المضلعات.
  • ST_MultiPolygons لها منطقة.
  • حدود ST_MultiPolygon هي الطول التراكمي للحلقات الخارجية والداخلية لعناصرها.
  • يتم تعريف الجزء الداخلي من ST_MultiPolygon على أنه التصميمات الداخلية التراكمية لعنصره ST_Polygons.
  • يمكن أن تتقاطع حدود عناصر ST_MultiPolygon فقط عند نقطة التماس.

SDO_Geometry

يتم تنفيذ SDO_Geometry باستخدام نظام نوع الكائن العلائقي القابل للتوسيع من Oracle. يتم تقديم نوع SDO_Geometry بواسطة Oracle باستخدام خيارين أساسيين:

  • Oracle Spatial هي ميزة اختيارية في Oracle Database Enterprise Edition. بالإضافة إلى توفير نوع SDO_Geometry ، يوفر Oracle Spatial عددًا من الإمكانات الجغرافية المكانية الإضافية.
  • يوفر Oracle Locator مجموعة فرعية من قدرات Oracle Spatial. يتم تضمينها كميزة قياسية في إصدارات Oracle Database Standard و Enterprise. من بين الإمكانات الأخرى ، يوفر نوع Oracle Spatial Geometry (يشار إليه باسم SDO_Geometry) وواجهة برمجة تطبيقات SQL لهذا المحتوى.

ArcGIS يدعم SDO_Geometry كطريقة اختيارية لتخزين البيانات المكانية. على وجه التحديد ، يمكن استخدام هندسة Oracle Spatial أو Locator لتخزين وإدارة الميزة ومحتويات البيانات النقطية لمجموعات البيانات داخل قواعد بيانات المؤسسة أو قواعد بيانات Oracle.

يخزن SDO_Geometry معلومات حول الهندسة بما في ذلك نوع الشكل الهندسي ومعرف الإسناد المكاني ونوع الاستيفاء (مستقيم مقابل منحني) وقيم الإحداثيات. يدعم نوع SDO_Geometry في قواعد البيانات الجغرافية هندسة النقطة الواحدة ومتعددة الأجزاء والخط والمنطقة. يمكن وصف الأشكال الهندسية بأنها ذات استيفاء خطي بين الإحداثيات كما هو محدد بواسطة OpenGIS Simple Feature Specification. يمكن أيضًا إنشاء الأشكال الهندسية من منحنيات دائرية أو مزيج من كلتا طريقتين الاستيفاء. تكون برامج التطبيقات مسؤولة عن إدخال محتويات نوع SDO_Geometry وتحديثها وجلبها بشكل صحيح باستخدام واجهة Oracle للعلاقة مع عناصر SQL. التطبيقات مسؤولة أيضًا عن ضمان التزام محتوى كل هندسة بالقواعد المحددة في وثائق Oracle Spatial. توفر Oracle إجراءات التحقق من صحة الهندسة التي يمكن تنفيذها بعد إدخال الأشكال الهندسية. بالإضافة إلى ذلك ، بدءًا من Oracle 11.1.0.7 ، يتم التحقق من صحة الشكل الهندسي في إدخالات الفهرس.

لا تنفذ إجراءات التحقق من صحة هندسة Oracle بدقة نفس مجموعة القواعد مثل التحقق من صحة هندسة ArcGIS. ومع ذلك ، تم تصميم ArcGIS لكتابة SDO_Geometry الذي يفي بقواعد التحقق من صحة Oracle.

يجب تسجيل المعلومات حول كل عمود SDO_Geometry في مخطط بيانات تعريف Oracle Spatial ، على الرغم من أن Oracle Spatial لا يقوم بذلك تلقائيًا. (يتم عرض مخطط بيانات تعريف Oracle Spatial لكل مخطط باعتباره العرض USER_SDO_GEOM_METADATA.) يجب أن يقوم البرنامج الذي ينشئ أعمدة SDO_Geometry بإدراج البيانات الوصفية لهذه الأعمدة. يقوم ArcGIS بهذا لأي فئات معالم SDO_Geometry يقوم بإنشائها. تحتوي البيانات الوصفية على اسم العمود المكاني ، واسم الجدول الموجود فيه ومالكه ، ومعرف Oracle Spatial Reference Identifier (SRID) ، وعدد الأبعاد ، ونطاق كل بُعد ، وتفاوت إحداثياته.

توفر الفهارس المكانية وصولاً سريعًا إلى الميزات بناءً على موقع هندستها. بالنسبة إلى SDO_Geometry ، تعد الفهارس المكانية R-tree بشكل عام هي الأكثر فعالية وأسهل في الإنشاء ، وتوصي Oracle باستخدامها في معظم المواقف. يوفر Oracle Spatial الأداة المساعدة Spatial Index Advisor للمساعدة في تحديد أفضل نوع من الفهرس المكاني لجدول معين. بالإضافة إلى ذلك ، استشر دليل ومرجع Oracle Spatial User's Guide الخاص بك للحصول على معلومات مفصلة عن أنواع الفهرس المكاني المدعومة ، وكيفية إنشائها ، والمفاضلات بين طرق الفهرس المكاني المختلفة.

يقوم Oracle Spatial بتوسيع SQL بوظائف البحث المكاني للتصفية الأولية والثانوية. يؤدي تضمين دالة SDO_FILTER في استعلام SQL إلى إجراء بحث مكاني أولي باستخدام الفهرس المكاني. المسندات المكانية ، مثل SDO_RELATE و SDO_CONTAINS ، ترجع العلاقات الثانوية بين أزواج كائنات SDO_Geometry. يحتوي Oracle Spatial على وظائف التحويل المكاني التي تغير شكل قيمة SDO_Geometry. على سبيل المثال ، تحسب الدالة SDO_BUFFER إحداثيات كائن SDO_Geometry جديد كمضلع مؤقت على مسافة معينة تحيط بالهندسة الأصلية. تتضمن وظائف التحويل المكاني الأخرى SDO_DIFFERENCE و SDO_INTERSECTION.

يوفر Oracle Spatial الوصول إلى عدد من الأنظمة المرجعية للإحداثيات المحددة مسبقًا باستخدام قيمة SRID. تحدد قيمة SRID ، المخزنة في كائن SDO_Geometry ، مرجع الإحداثيات للهندسة المخزنة في ذلك الكائن. إذا لم يكن NULL ، فإن SRID في كائن SDO_Geometry هو مفتاح خارجي في جدول يحتوي على تفاصيل حول كل SRID. هذا الجدول هو MDSYS.CS_SRS. تستخدم الدالة SDO_TRANSFORM معرف المرجع المكاني لإنشاء تحويلات مرجعية إحداثي. يستخدم ArcGIS أيضًا هذه المعلومات لإنشاء مراجع مكانية.

ثنائي مضغوط

يستخدم نوع التخزين الثنائي المضغوط Esri آلية تخزين ثنائية لتخزين هندسة المعالم. تتكون فئة الميزات الثنائية المضغوطة من ثلاثة جداول: جدول الأعمال ، وجدول الميزات ، وجدول الفهرس المكاني.

بعد التحقق من الهندسة ، يقوم تطبيق العميل بضغطها وإرسالها إلى قاعدة البيانات الجغرافية ، حيث يتم تخزينها بتنسيق ثنائي مضغوط في جدول ميزات ، أو جدول F. يؤدي ضغط الشكل الهندسي على العميل إلى تفريغ المهمة من خادم قاعدة البيانات وتقليل وقت الإرسال لإرسال الشكل الهندسي. كما يوفر تخزينًا واسترجاعًا فعالاً للبيانات المكانية عن طريق تقليل المساحة المطلوبة لتخزين البيانات بنسبة تصل إلى 40 بالمائة.

يحتوي جدول الأعمال على سمات وعمود مكاني. العمود المكاني هو مفتاح الميزة وجداول الفهرس المكاني.

تتم إدارة العلاقة بين جدول الأعمال وجدول الميزات من خلال العمود المكاني وعمود معرف الميزة (FID). يعد هذا المفتاح ، الذي يتم الاحتفاظ به بواسطة ArcGIS ، فريدًا.


لماذا أقوم بترحيل البيانات؟

  • للوصول إلى البيانات المكانية أو النقطية باستخدام لغة الاستعلام المهيكلة (SQL)
  • للانتقال من نوع بيانات قد لا يتم دعمه في المستقبل إلى نوع مدعوم

الوصول إلى البيانات باستخدام SQL

يسمح الوصول إلى المعلومات الموجودة في قاعدة البيانات الجغرافية عبر SQL للتطبيقات الخارجية (تلك التي لم يتم تطويرها في بيئة ArcObjects) بالعمل مع البيانات المجدولة المُدارة بواسطة قاعدة البيانات الجغرافية. إذا كانت هذه التطبيقات بحاجة إلى الوصول إلى البيانات المكانية أو البيانات النقطية في قاعدة البيانات الجغرافية ، فيجب عليك تخزين البيانات المكانية أو البيانات النقطية في أنواع البيانات التي تسمح بالوصول إلى SQL. For example, using the ST_Raster storage type allows you to access your raster data with SQL, something that you cannot do easily if your raster data is stored in a BLOB, LONG RAW, IMAGE, BINARY, or BYTEA field.

Move from types that may not be supported in future releases

Oracle is recommending the use of BLOB or BFILE data types instead of LONG RAW data types in its databases. Although LONG RAW columns are still supported, if you have LONG RAW attribute, geometry, or raster fields in your current geodatabase in Oracle, you should migrate them to a different format in preparation for when they are not supported.

The storage for the attribute, geometry, and raster columns in a geodatabase is controlled by the DBTUNE parameters ATTRIBUTE_BINARY, GEOMETRY_STORAGE, and RASTER_STORAGE, respectively. The defaults for these parameters under the DBTUNE DEFAULTS configuration keyword are different depending on which release of ArcGIS you were using when you created your geodatabase. The following table shows the default setting under the DEFAULTS keyword in the DBTUNE table of geodatabases in Oracle.

Data created in new (not upgraded) 9.3 or later release geodatabases using the default parameter settings do not use the LONG RAW storage type. However, any existing data created with any or all of these parameters set to LONG RAW or any new data in upgraded geodatabases that have these parameters set to LONG RAW will still contain LONG RAW columns. To change the data types for these columns, you must alter your DBTUNE settings and migrate the data.

Beginning with ArcGIS 10.1, feature classes created in geodatabases in SQL Server use the Microsoft geometry type be default. To move your existing feature classes to the geometry storage type, use the Migrate Storage geoprocessing tool or a Python script.