أكثر

كيفية إيجاد نقطة على خط مستقيم وفي نطاق 10 أمتار

كيفية إيجاد نقطة على خط مستقيم وفي نطاق 10 أمتار


لدي خط مستقيم يظهر في الرسم التخطيطي ولدي نقطة هي بعض الوقت على الخط أو خارج الخط ولكن في النطاق وهو خط أحمر وبعض الوقت يكون خارج النطاق ، فكيف يمكنني العثور عليه عندما يكون في الطريق و خارج المسار في الفهرس المكاني mysql

مشروعي هو هذا كما ترون الحافلة رقم 26 خارج الطريق ، فكيف يمكنني الحصول على الحافلة خارج الطريق

أعتقد أن هناك شيئين للقيام بذلك

  1. تحويل Linestring إلى مضلع بنطاق وإيجاد نقطة في مضلع.
  2. تحويل النقطة إلى مضلع والتحقق من الخط الخطي يتقاطع مع المضلع.

لذا قل كيف يمكنني القيام بذلك

هيكل قاعدة البيانات الخاصة بي هو

'id'، 'int (11)'، 'NO'، 'PRI'، NULL، 'auto_increment "route_name'، 'varchar (45)'، 'YES'،"، NULL، "from_id '،' varchar (45 ) '،' YES '، "، NULL،" to_id'، 'varchar (45)'، 'YES'، "، NULL،" line_string '،' geometry '،' NO '،' MUL '، NULL، "

يمكنك إنشاء المضلع باستخدام Buffer.

لاحظ أن المسافة بوحدات النظام المرجعي للإحداثيات الذي تستخدمه (والتي ربما تكون درجات منذ أن ذكرت خط الطول وخط العرض). لذا ، إذا كنت تريد مخزنًا مؤقتًا بطول 10 أمتار ، فربما تحتاج إلى عرضه (أو أن تكون على استعداد لقبول بعض عدم الدقة في حجم المخزن المؤقت إذا كنت تريد فقط تحويل 10 أمتار إلى درجات). لا يمكنك عمل الإسقاط داخل mysql - فهو ليس بهذه الذكاء. يمكن لقواعد البيانات الأخرى (مثل spatialite أو postgis) القيام بذلك باستخدام ST_Transform. سيعتمد عدم الدقة في محاولة القيام بذلك بالدرجات على عدد درجات خط العرض مقابل درجات خط الطول 10 أمتار لموقع عملك.

بمجرد الانتهاء من ذلك ، يمكنك إجراء ST_Disjoint لتحديد أي نقاط ليست داخل مضلع.


كيفية قراءة العنوان المكاني للشبكة الوطنية للولايات المتحدة (USNG)

تحديد منطقة الشبكة لعنوان فريد من نوعه على مستوى العالم

تحديد مساحة 100000 متر مربع للمناطق الإقليمية.

إحداثيات الشبكة للمناطق المحلية.

يسمح هذا التنسيق باقتطاع العنوان المكاني (أو قد يتم اقتطاع مصطلح آخر مختصر). على سبيل المثال ، قد يصور الورق ذو الرأسية الثابتة لوزارة الداخلية العنوان على النحو التالي:

1849 C Street NW، Washington، DC 20006

USNG: 18SUJ22850705 (NAD 83)

يوفر العنوان المكاني الكامل USNG قيمة فريدة وهو ضروري للاستخدام مع أجهزة استقبال GPS وأنظمة المعلومات الجغرافية (GIS). العنوان المكاني USNG من الورق ذي الرأسية الثابتة أعلاه هو للنقطة الوسطى للمبنى. من ناحية أخرى ، قد يخبر أحد موظفي وزارة الداخلية شخصًا قادمًا للزيارة من المنطقة المحلية ، "يقع مدخل زائرنا الجنوبي في 1849 C Street NW ، عند الشبكة 22850694." قد يحدد عنوان مكاني آخر مدخل الزائر الشمالي ، وقد تحدد مجموعة أخرى منحدر التحميل لمركبات التوصيل.

إحداثيات شبكة قراءة المنطقة المحلية. تُستخدم إحداثيات الشبكة لتحديد مكان معين داخل منطقة محلية (ضمن منطقة 100 × 100 كيلومتر). تتم كتابة الإحداثيات على طول جوانب الخريطة لتحديد خطوط شبكة محددة. (تستند خطوط الشبكة هذه إلى قيم UTM.) يحدد الرقمان الأكبران خط الشبكة ويُعرفان باسم الأرقام الأساسية كما هو موضح أدناه.

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

4 أرقام - 2306 - يحدد موقع نقطة بدقة 1000 متر (منطقة بحجم الحي).

6 أرقام - 234064 - يحدد موقع نقطة بدقة 100 متر (مساحة ملعب كرة قدم).

8 أرقام - 23480647 - تحدد نقطة بدقة 10 أمتار (حجم منزل متواضع).

10 أرقام - 2348306479 - يحدد موقع نقطة بدقة 1 متر (داخل مكان وقوف السيارات).

في المثال التالي ، يوصف نصب واشنطن بأنه يقع على الشبكة 23480647 (فكر في 2348/0647). اقرأ الحق في السطر 23 (باستخدام الأرقام الرئيسية). ثم عد خطوط الشبكة حتى السطر 06. يُعرف هذا التقاطع بالشبكة 2306. هذه القيمة المكونة من أربعة أرقام ستعطي الموقع ضمن 1000 متر. بقياس متر من الخط 23 ، نجد نصب واشنطن على بعد 480 مترًا شرقًا. عنصر التخفيف الكامل هو 23480. عند القياس بالأمتار من خط الشبكة 06 ، يقع النصب التذكاري على ارتفاع 470 مترًا شمالًا. المكون الشمالي الكامل هو 05470. نقوم بإسقاط قيم مستوى 1 متر (كما هو موضح في هذه الحالة على شكل 0 ثانية) ، ودمج مكوني الاتجاه الشرقي والشمالي ، يتم إعطاء إحداثي الشبكة كقيمة مكونة من ثمانية أرقام (في حدود 10 أمتار) :

تحديد المنطقة الإقليمية بمساحة 100،000 متر مربع.يقسم USNG العالم إلى مربعات طولها 100000 متر ويحددها بقيمتين من الحروف. الرسم التوضيحي أدناه يصور منطقة واشنطن العاصمة. في العنوان المكاني لنصب واشنطن (18SUJ23480647) يمكنك أن ترى أن النصب يقع ضمن 100000 متر مربع 100000 متر مربع UJ. (ملحوظة: المربع الأصفر والأحمر يحدد حجم 100 كم × 100 كم منطقة محليةالمحيطة بواشنطن العاصمة).

بينما يُشار إلى USNG على أنه نظام مرجعي رقمي أبجدي لنظام إحداثيات UTM ، إلا أنه في الواقع أكثر من ذلك بكثير. تم تصميم مخطط الحروف لتحديد الهوية التي تبلغ مساحتها 100000 متر مربع بحيث لا تكرر أي مجموعة مكونة من حرفين نفسها ولكن كل 18 درجة من خط الطول ومنطقة مماثلة في خط العرض. وبالتالي فإن أي بادئة مكونة من حرفين لإحداثيات شبكة ستوفر قيمة فريدة ضمن مساحة كبيرة جدًا. في حالة نصب واشنطن التذكاري ، في UJ23480647 ، تم تحديد موقعه بشكل فريد داخل منطقة تغطي معظم التكلفة الشرقية للولايات المتحدة كما هو موضح أدناه.

تعيينات منطقة شبكة القيم الفريدة على مستوى العالم. العمل من منطقة محلية ، من خلال المناطق الإقليمية ، فإن المستوى الأخير من التعريف في العنوان المكاني هو تعيين منطقة الشبكة. ينقسم العالم إلى 60 منطقة UTM ، كل 6 درجات من خطوط الطول واسعة. يبدأ مخطط الترقيم الخاص بها عند خط طول 180 درجة ، ويتم حسابه شرقًا. الولايات المتحدة المتاخمة مغطاة بالمناطق من 10 إلى 19. في اتجاه الشمال ، ينقسم العالم إلى 8 درجات من أحزمة خط العرض. الولايات المتحدة المتاخمة على سبيل المثال مغطاة بأحزمة R و S و T و U. وبالتالي فإن منطقة واشنطن العاصمة تقع ضمن تعيين منطقة الشبكة 18S كما هو موضح أدناه. تحدد هذه البادئة العنوان المكاني الفريد للشبكة الوطنية الأمريكية لنصب واشنطن التذكاري على الكوكب بأكمله. هذا العنوان المكاني الكامل والفريد مطلوب لأجهزة استقبال GPS.

للمراجعة ، يمكننا أن نرى عنوانًا مكانيًا كاملًا للشبكة الوطنية الأمريكية يحتوي على ثلاثة أجزاء أثناء الانتقال إلى موقع فريد ،

تعيين منطقة الشبكة (أي 18S).

تحديد مساحة 100000 متر مربع (أي UJ).

إحداثيات الشبكة لبعض الأرقام الزوجية التي تتراوح من 2 إلى 10 (أي 23480647 في هذه الحالة ، ثمانية أرقام تحدد مكانًا بحجم منزل متواضع تقريبًا). أنت تقرأ دائمًا بشكل صحيح ، ثم لأعلى عند رسم الإحداثيات.

تتم كتابة العنوان المكاني عادةً كسلسلة واحدة من القيم. لاحظ كيف تم تضمين المسند الأفقي (NAD 83):


4 إجابات 4

يمكنك الاستقراء من مخططات منطقة التهجئة هذه وقواعد تحديد نصف القطر الدقيق في المربعات.

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

يمكنك العد قطريًا عبر المربع ، لكن تذكر أن كل قطري ثاني يُحسب كمربعين من المسافة. إذا كانت الحافة البعيدة للمربع داخل منطقة التعويذة ، فإن أي شيء بداخل هذا المربع يقع داخل منطقة التعويذة. إذا كانت منطقة التعويذة تلامس فقط الحافة القريبة من المربع ، فإن أي شيء داخل هذا المربع لا يتأثر بالتعويذة.

(الرسم التخطيطي والنص مأخوذان من Pathfinder ، لكن هذه القواعد لم تتغير منذ 3.5.)


كيفية العثور على نقطة على خط مستقيم وفي نطاق 10 أمتار - نظم المعلومات الجغرافية

تطبيق معيار GeoSPARQL 1.0 باستخدام Apache Jena لاستعلام SPARQL أو API.

يتبع هذا التنفيذ معيار 11-052r4 OGC GeoSPARQL (http://www.opengeospatial.org/standards/geosparql). التطبيق عبارة عن Java خالص ولا يتطلب أي إعداد أو تكوين لأي قواعد بيانات علائقية وإضافات جغرافية مكانية.

يقوم بتنفيذ فئات المطابقة الست الموضحة في وثيقة GeoSPARQL:

  • النواة
  • مفردات الطبولوجيا
  • تمديد الهندسة
  • طوبولوجيا الهندسة
  • ملحق RDFS Entailment
  • ملحق إعادة كتابة الاستعلام

يتم دعم تسلسل WKT (كما هو موضح في 11-052r4) و GML 2.0 Simple Features Profile (10-100r3). يمكن تنفيذ عمليات تسلسل إضافية من خلال توسيع io.github.galbiston.geosparql_jena.implementation.datatype.GeometryDatype والتسجيل مع Apache Jena's org.apache.jena.datatypes.TypeMapper.

يتم دعم جميع عائلات العلاقات المكانية الثلاث: ميزة بسيطة, ايجنهوفر و RCC8.

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

وجدت المقارنة المعيارية للتنفيذ ضد سترابون والبرلمان أنها قابلة للمقارنة أو أسرع. كانت المقارنة المعيارية المستخدمة هي استعلام Geographica ومجموعة البيانات (http://geographica.di.uoa.gr/). سيتم نشر نتائج المقارنة المعيارية قريبًا.

يتم أيضًا توفير الميزات الإضافية التالية:

  • يتم حساب الخصائص الهندسية تلقائيًا ولا يلزم تأكيدها في مجموعة البيانات.
  • يتم تطبيق التحويل بين الأنظمة المرجعية المكانية / الإحداثية EPSG تلقائيًا. لذلك ، يمكن تطبيق مجموعات البيانات المختلطة أو الاستعلام. هذا يعتمد على التثبيت المحلي لمجموعة بيانات Apache SIS EPSG ، راجع التبعيات الرئيسية.
  • يتم تحويل وحدات القياس تلقائيًا إلى الوحدات المناسبة لنظام الإحداثي المرجعي.
  • يتم تخزين نتائج الهندسة والتحويل والعلاقة المكانية في مخابئ مؤقتة وقابلة للتكوين ومحدودة زمنياً لتحسين أوقات الاستجابة وتقليل عمليات إعادة الحساب.
  • تحويل مجموعة البيانات بين التسلسلات والأنظمة المرجعية المكانية / الإحداثية. يمكن أيضًا تحميل البيانات الجدولية ، راجع مشروع جداول RDF (https://github.com/galbiston/rdf-tables).
  • تم تضمين وظائف لاختبار الخصائص الهندسية مباشرة على Geometry Literals للراحة.

يمكن الوصول إلى GeoSPARQL Jena كمكتبة باستخدام Maven وما إلى ذلك من Maven Central.

يتوفر خادم HTTP (نقطة نهاية SPARQL) باستخدام Apache Jena's Fuseki من مشروع GeoSPARQL Fuseki (https://github.com/galbiston/geosparql-fuseki).

تكوين استعلام سباركل

يتطلب استخدام المكتبة لاستعلام سباركل سطرًا واحدًا من التعليمات البرمجية. يتم تنفيذ جميع عمليات الفهرسة والتخزين المؤقت أثناء تنفيذ الاستعلام ، وبالتالي يجب أن يكون هناك حد أدنى من التأخير أثناء التهيئة. سيؤدي هذا إلى تسجيل وظائف الخاصية مع محرك استعلام ARQ وتكوين ملف فهارس تستخدم للتخزين المؤقت لفترة زمنية محدودة.

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

  • الهندسة الحرفية: كائنات الهندسة بعد إلغاء التسلسل من Geometry Literal.
  • تحويل الهندسة: كائنات هندسية ناتجة عن تحويلات التنسيق بين أنظمة الإسناد المكاني.
  • إعادة كتابة الاستعلام: نتائج العلاقات المكانية بين السمات والأجسام المكانية الهندسية.

وجد الاختبار تحسنًا يصل إلى 20٪ في مدد إكمال الاستعلام باستخدام الفهارس. ال فهارس يمكن تهيئتها حسب الحجم ومدة الاحتفاظ وتكرار التنظيف.

الإعداد الأساسي بالقيم الافتراضية: GeoSPARQLConfig.setupMemoryIndex ()

الفهارس المعينة على الأحجام القصوى: GeoSPARQLConfig.setupMemoryIndexSize (50000، 50000، 50000)

مجموعة الفهارس لإزالة الكائنات غير المستخدمة بعد 5 ثوانٍ: GeoSPARQLConfig.setupMemoryIndexExpiry (5000 ، 5000 ، 5000)

لا يوجد إعداد فهارس (لا يزال يتم تنفيذ إعادة كتابة الاستعلام ولكن لم يتم تخزين النتائج): GeoSPARQLConfig.setupNoIndex ()

لا توجد فهارس ولا إعادة كتابة استعلام: GeoSPARQLConfig.setupNoIndex (خطأ)

إعادة تعيين الفهارس والبيانات المخزنة الأخرى: GeoSPARQLConfig.reset ()

يتم توفير مجموعة متنوعة من طرق التكوين في io.github.galbiston.geosparql_jena.configuration.GeoSPARQLConfig. يتم أيضًا تطبيق التخزين المؤقت لبيانات الكمية المستخدمة بشكل متكرر ولكن بكميات صغيرة في العديد السجلات، على سبيل المثال تنسيق النظم المرجعية والتحولات الرياضية.

الاستعلام عن مجموعات البيانات ونماذج الأمبير باستخدام SPARQL

يجب إجراء إعداد GeoSPARQL Jena مرة واحدة فقط في التطبيق. بعد أن يتم تنفيذ الاستعلام عن الإعداد باستخدام طرق الاستعلام القياسية في Apache Jena.

للاستعلام عن نموذج باستخدام GeoSPARQL أو SPARQL القياسي:

يمكن العثور على مزيد من المعلومات حول استعلام SPARQL باستخدام Apache Jena على موقع الويب الخاص بهم (https://jena.apache.org/tutorials/sparql.html). إذا كانت مجموعة البيانات الخاصة بك بحاجة إلى أن تكون منفصلة عن تطبيقك ويتم الوصول إليها عبر HTTP ، فربما تحتاج إلى مشروع GeoSPARQL Fuseki (https://github.com/galbiston/geosparql-fuseki). يجب إعداد وظيفة GeoSPARQL في التطبيق أو خادم Fuseki حيث توجد مجموعة البيانات.

أنه مستحسن يتم تضمين خصائص hasDefaultGeometry في مجموعة البيانات للوصول إلى جميع الوظائف. أنه من الضروري أن فئات SpatialObject يتم تأكيدها أو استنتاجها (أي يتم تطبيق سبب باستخدام مخطط GeoSPARQL) في مجموعة البيانات. يمكن العثور على طرق إعداد مجموعة البيانات في io.github.galbiston.geosparql_jena.configuration.GeoSPARQLOperations.

يمكن استخدام المكتبة كواجهة برمجة تطبيقات في Java. الطبقة الرئيسية للتعامل مع الهندسة وعلاقاتها المكانية هي GeometryWrapper. يمكن الحصول على ذلك عن طريق تحليل تمثيل السلسلة لشكل هندسي باستخدام نوع البيانات المناسب (مثل WKT أو GML). بدلاً من ذلك ، يمكن استخراج Literal تلقائيًا باستخدام طريقة GeometryWrapper.extract () وأنواع البيانات المسجلة. يمكن استخدام GeometryWrapperFactory لإنشاء GeometryWrapper مباشرة. هناك تداخل بين عائلات العلاقات المكانية لذلك لم يتم تحديد الطرق المتكررة.

تحليل هندسي حرفي: GeometryWrapper geometryWrapper = WKTDatatype.INSTANCE.parse ("POINT (1 1)")

مقتطف من Jena Literal: GeometryWrapper geometryWrapper = GeometryWrapper.extract (geometryLiteral)

إنشاء من JTS Geometry: GeometryWrapper geometryWrapper = GeometryWrapperFactory.createGeometry (geometry، srsURI، geometryDatatypeURI)

إنشاء من JTS Point Geometry: GeometryWrapper geometryWrapper = GeometryWrapperFactory.createPoint (تنسيق ، srsURI ، geometryDatatypeURI)

تحويل CRS / SRS: GeometryWrapper otherGeometryWrapper = geometryWrapper.convertCRS ("http://www.opengis.net/def/crs/EPSG/0/27700")

العلاقة المكانية: منطقية isCrossing = geometryWrapper.crosses (otherGeometryWrapper)

نمط تقاطع DE-9IM: منطقي isRelated = geometryWrapper.relate (otherGeometryWrapper، "TFFFTFFFT")

خاصية الهندسة: منطقية isEmpty = geometryWrapper.isEmpty ()

يحدد معيار GeoSPARQL أن WKT Geometry Literals بدون SRS URI تم ضبطها افتراضيًا على CRS84 http://www.opengis.net/def/crs/OGC/1.3/CRS84.

يدعم معيار OGC GeoSPARQL تمثيل البيانات الجغرافية المكانية والاستعلام عنها على الويب الدلالي. تحدد GeoSPARQL مفردات لتمثيل البيانات الجغرافية المكانية في RDF ، وتحدد امتدادًا للغة استعلام SPARQL لمعالجة البيانات الجغرافية المكانية. بالإضافة إلى ذلك ، تم تصميم GeoSPARQL لاستيعاب الأنظمة القائمة على التفكير المكاني النوعي والأنظمة القائمة على الحسابات المكانية الكمية.

يعتمد معيار GeoSPARQL على معيار OGC Simple Features (http://www.opengeospatial.org/standards/sfa) المستخدم في قواعد البيانات العلائقية. تم إجراء تعديلات وتحسينات للاستخدام مع RDF و SPARQL. يعمل معيار الميزات البسيطة ، ومن ثم GeoSPARQL ، على تبسيط العمليات الحسابية إلى هندسة المسوي الإقليدية. لذلك ، فإن مجموعات البيانات التي تستخدم نظامًا مرجعيًا جغرافيًا مكانيًا / إحداثياتًا ، والتي تستند إلى خطوط الطول والعرض على شكل بيضاوي ، على سبيل المثال WGS84 ، سيتم عرض خطأ بسيط. تم اعتبار هذا الخطأ مقبولاً بسبب التبسيط في الحساب الذي يقدمه.

إطار عمل Java لبناء الويب الدلالي وتطبيقات البيانات المرتبطة. يوفر إطار العمل التوافق القياسي لـ RDF و SPARQL ويتضمن امتدادات للتخزين الدائم (TDB) وخادم HTTP (Fuseki).

متغير البيئة Apache SIS / SIS_DATA

أباتشي نظام المعلومات المكانية (SIS) هو برنامج مجاني ، مكتبة لغة جافا لتطوير التطبيقات الجغرافية المكانية. يوفر SIS هياكل بيانات للميزات الجغرافية والبيانات الوصفية المرتبطة جنبًا إلى جنب مع طرق لمعالجة هياكل البيانات هذه. المكتبة هي تطبيق لواجهات GeoAPI 3.0 ويمكن استخدامها لتطبيقات سطح المكتب أو الخادم.

يتم تضمين مجموعة فرعية من الأنظمة المرجعية المكانية / الإحداثية EPSG افتراضيًا. لا يتم توزيع مجموعة بيانات EPSG الكاملة نظرًا لأن شروط استخدام EPSG غير متوافقة مع ترخيص Apache. تتوفر عدة خيارات لتضمين مجموعة بيانات EPSG عن طريق تعيين متغير البيئة SIS_DATA (http://sis.apache.org/epsg.html).

يمكن تضمين مجموعة بيانات EPSG المضمنة في تطبيق Gradle عن طريق إضافة التبعية التالية إلى build.gradle:

إن JTS Topology Suite عبارة عن مكتبة جافا لإنشاء هندسة المتجهات ومعالجتها.

فيما يلي نقاط التنفيذ التي قد تكون مفيدة أثناء الاستخدام.

تم نشر مخطط RDF / XML لمعيار GeoSPARQL v1.0 (v1.0.1 - http://schemas.opengis.net/geosparql/1.0/geosparql_vocab_all.rdf). يمكن تطبيق ذلك على Jena Models (https://jena.apache.org/documentation/inference/) لتوفير استنتاج RDFS و OWL على مجموعة بيانات متوافقة مع GeoSPARQL. ومع ذلك ، فإن المخطط المنشور لا يتوافق مع المعيار.

الخاصية hasDefaultGeometry مفقودة من المخطط وبدلاً من ذلك تم ذكر الخاصية defaultGeometry.

هذا يمنع إجراء استنتاج RDFS بشكل صحيح وقد تم إبلاغ متتبع معايير OGC. يتوفر إصدار مصحح من المخطط في مجلد الموارد.

يحدد معيار GeoSPARQL و Simple Features كلا من أنماط التقاطع DE-9IM لعائلات العلاقات المكانية الثلاث. ومع ذلك ، فإن هذه الأنماط لا تتوافق دائمًا مع الأنماط التي تحددها مكتبة JTS لعلاقات معينة.

على سبيل المثال ، تستخدم GeoSPARQL / Simple Features TFFFTFFFT يساوي العلاقات في ميزة بسيطة, ايجنهوفر و RCC8. ومع ذلك ، لا يؤدي هذا إلى النتيجة المتوقعة عادة عند مقارنة زوج من الأشكال الهندسية للنقاط. ينص معيار الميزات البسيطة على أن حدود النقطة فارغة. لذلك ، سيكون تقاطع الحدود بين نقطتين فارغًا أيضًا ، لذا أعط نتيجة مقارنة سلبية.

تستخدم JTS والمكتبات الأخرى نمط التقاطع البديل لـ T * F ** FFF *. هذا هو مزيج من في غضون و يحتوي على العلاقات ويعطي النتائج المتوقعة لجميع أنواع الهندسة.

تم تنفيذ العلاقات المكانية التي تستخدمها JTS على أنها امتداد مكاني: يساوي عامل التصفية ووظائف الملكية. يمكن للمستخدم أيضًا توفير أنماط تقاطع DE-9IM الخاصة به باستخدام geof: relate filter function.

أشكال / أنواع العلاقات المكانية والهندسة

لا تنطبق العلاقات المكانية للعائلات المكانية الثلاث على كافة مجموعات الأشكال الهندسية (Point و LineString و Polygon) ومجموعاتها (MultiPoint و MultiLineString و MultiPolygon). لذلك ، قد لا تعطي بعض الاستعلامات جميع النتائج التي قد تكون متوقعة في البداية.

  • في بعض العلاقات قد تكون هناك نتائج فقط عند استخدام مجموعة من الأشكال ، على سبيل المثال يمكن أن تتداخل نقطتان متعددتان ولكن لا يمكن أن تتداخل نقطتان.
  • قد تنطبق العلاقة على مجموعة واحدة فقط ولكن لا تنطبق على المعاملة بالمثل ، على سبيل المثال قد يتقاطع خط مع مضلع ولكن المضلع قد لا يتقاطع مع خط.
  • ال RCC8 تنطبق العائلة فقط على أنواع المضلعات المتعددة والمضلع.

راجع الصفحات 8-10 من 11-052r4 معيار GeoSPARQL لمزيد من التفاصيل.

العلاقات الثلاثة يساوي (sf مساواة, ehEquals و rcc) استخدم المساواة المكانية وليس المساواة المعجمية. لذلك ، قد لا تكون بعض المقارنات باستخدام هذه العلاقات كما هو متوقع.

وصف JTS لـ ساد مساواة يكون:

  • صحيح إذا كان هناك نوعان من الأشكال الهندسية تشتركان في نقطة واحدة على الأقل ولا توجد أي نقطة من أي من الأشكال الهندسية في الجزء الخارجي من الهندسة الأخرى.

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

على سبيل المثال LINESTRING (0 0 ، 0 10) و LINESTRING (0 0 ، 0 5 ، 0 10) متساويان مكانيًا.

يوفر ملحق إعادة كتابة الاستعلام بنية استعلام أبسط. يمكن استخدام الميزة والهندسة في العلاقات المكانية دون الحاجة إلى تأكيد العلاقات في مجموعة البيانات. هذا يعني أيضًا أن Geometry Literal لا يحتاج إلى تحديد في الاستعلام. في حالة الميزات ، يتطلب ذلك استخدام الخاصية hasDefaultGeometry في مجموعة البيانات.

تتوفر الطرق لتطبيق خاصية hasDefaultGeometry على كل Geometry مع خاصية hasGeometry واحدة ، راجع io.github.galbiston.geosparql_jena.configuration.GeoSPARQLOperations.

اعتمادًا على العلاقة المكانية ، قد تتضمن الاستعلامات الميزة والهندسة المحددين في النتائج. على سبيل المثال الميزة "أ" مرتبطة باستعلام في مجموعة بيانات تحتوي فقط على FeatureA و GeometryA. يتم عرض النتائج FeatureA و GeometryA بدلاً من عدم وجود نتائج. لذلك ، قد تكون هناك حاجة إلى التصفية باستخدام عامل التصفية (! sameTerm (؟ subj،؟ obj)) وما إلى ذلك في بعض الحالات. يمكن إيقاف تشغيل وظيفة إعادة كتابة الاستعلام في تكوين المكتبة ، راجع io.github.galbiston.geosparql_jena.configuration.GeoSPARQLConfig.

يتم تعيين فهرس إعادة كتابة استعلام لكل مجموعة بيانات لتخزين نتائج الاختبارات السابقة. هناك احتمال أن يتم اختبار العلاقات عدة مرات في استعلام (أي ميزة-ميزة, ميزة الهندسة, الهندسة - الهندسة, ميزة الهندسة). لذلك ، من المفيد الاحتفاظ بالنتائج لفترة قصيرة على الأقل.

التكرار من خلال جميع مجموعات العلاقات المكانية لمجموعة بيانات تحتوي على ن ستنتج Geometry Literals 27ن^ 2 نتائج صواب / خطأ (سيكون التأكيد على جمل النتيجة الحقيقية في مجموعة بيانات مجموعة فرعية). يتم إعطاء التحكم على أساس مجموعة البيانات للسماح بالاختيار في وقت وكيفية تطبيق تخزين نتائج إعادة الكتابة ، على سبيل المثال تخزين جميع النتائج التي تم العثور عليها في مجموعة بيانات صغيرة ولكن عند الطلب لمجموعة بيانات كبيرة.

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

تتوفر طرق تحويل مجموعات البيانات بين التسلسلات والأنظمة المرجعية المكانية / الإحداثية في: io.github.galbiston.geosparql_jena.configuration.

تعرض القائمة التالية بعض العمليات التي يمكن إجراؤها. بمجرد إجراء هذه العمليات ، يمكن إجراء تسلسل إلى ملف أو تخزينه في Jena TDB لإزالة الحاجة إلى إعادة المعالجة.

تحميل نموذج Jena من ملف: Model dataModel = RDFDataMgr.loadModel ("data.ttl")

تحويل Feature-GeometryLiteral إلى GeoSPARQL Feature-Geometry-GeometryLiteral: Model geosparqlModel = GeoSPARQLOperations.convertGeometryStructure (dataModel)

تحويل المسندات Feature-Lat ، Feature-Lon Geo إلى بنية GeoSPARQL Feature-Geometry-GeometryLiteral ، مع خيار إزالة المسندات الجغرافية: Model geosparqlModel = GeoSPARQLOperations.convertGeoPredicates (dataModel، true)

تأكيد عبارات hasDefaultGeometry الإضافية لثلاث مرات hasGeometry الفردي ، المستخدمة في إعادة كتابة الاستعلام: GeoSPARQLOperations.applyDefaultGeometry (geosparqlModel)

تحويل Geometry Literals إلى نظام الإسناد المكاني WGS84 ونوع بيانات WKT: Model model = GeoSPARQLOperations.convert (geosparqlModel ، "http://www.opengis.net/def/crs/EPSG/0/4326" ، "http: // www .opengis.net / ont / geosparql # wktLiteral ")

تطبيق مخطط GeoSPARQL مع استنتاج RDFS وتأكيد العبارات الإضافية في النموذج: GeoSPARQLOperations.applyInferencing (نموذج)

تطبيق بادئات GeoSPARQL شائعة الاستخدام لمعرفات URI على النموذج: GeoSPARQLOperations.applyPrefixes (نموذج)

إنشاء فهرس مكاني لنموذج داخل مجموعة بيانات للاستعلام المكاني: مجموعة بيانات مجموعة البيانات = SpatialIndex.wrapModel (نموذج)

تتوفر عمليات أخرى ويمكن تطبيقها على مجموعة بيانات تحتوي على نماذج متعددة وفي بعض الحالات ملفات ومجلدات. هذه العمليات تفعل ليس تكوين وإعداد وظائف أو فهارس GeoSPARQL المطلوبة للاستعلام.

يمكن إنشاء فهرس مكاني لتحسين البحث في مجموعة البيانات. من المتوقع أن يكون الفهرس المكاني فريدًا لمجموعة البيانات ولا يجب مشاركته بين مجموعات البيانات. بمجرد إنشاء الفهرس المكاني لا يمكن إضافة عناصر إضافية إليه.

الفهرس المكاني مطلوب لوظائف الخاصية jena-spatial وهو اختياري لعلاقات GeoSPARQL المكانية. يمكن استخدام SRS واحد فقط لفهرس مكاني ويوصى بتحويل مجموعات البيانات إلى SRS واحد ، راجع GeoSPARQLOperations.

يمكن إعداد فهرس مكاني من خلال io.github.galbiston.geosparql_jena.configuration.GeoSPARQLConfig. تتوفر طرق إضافية لبناء وتحميل وحفظ الفهارس المكانية في io.github.galbiston.geosparql_jena.spatial.SpatialIndex.

تستخدم الأنظمة المرجعية المكانية / الإحداثية مجموعة متنوعة من أنظمة القياس لتحديد المسافات. يمكن تحديد هذه باستخدام معرف URI ، إما URL أو URN ، مع إجراء التحويل تلقائيًا كما هو مطلوب. وتجدر الإشارة إلى وجود خطأ متأصل في أنظمة الإسناد المكاني وقد يحدث بعض الاختلاف في القيم بين الأنظمة المختلفة.

يقدم الجدول التالي بعض الأمثلة للوحدات المدعومة (يمكن إضافة الوحدات الإضافية إلى سجل الوحدات باستخدام javax.measure.Unit API. جميع URI هذه موجودة في مساحة الاسم http://www.opengis.net/def/uom/ OGC / 1.0 / وهنا استخدم وحدات البادئة.

URI وصف
الوحدات: كيلومتر أو وحدات: كيلومتر كيلومترات
الوحدات: المتر أو الوحدات: المتر متر
الوحدات: الميل أو الوحدات: statuteMile اميال
الوحدات: الدرجة درجات
الوحدات: راديان راديان

يمكن العثور على القائمة الكاملة للوحدات الافتراضية في io.github.galbiston.geosparql_jena.implementation.vocabulary.Unit_URI.

دعم لغة توصيف الجغرافيا (GML)

ملف تعريف GML المدعوم هو GML 2.0 Simple Features Profile (10-100r3) ، وهو ملف تعريف GML 3.2.1 (07-036r1). يقيد ملف التعريف الأشكال الهندسية المسموح بها في GML 3.2.1 لمجموعة فرعية ، راجع صفحة 10-100r3 22. يدعم ملف التعريف أشكال النقاط و LineString و Polygon المستخدمة في WKT. هناك أيضًا تسلسلات أشكال إضافية متوفرة في ملف التعريف غير موجود في WKT أو JTS لتوفير تمثيلات مبسطة والتي من شأنها استخدام LineStrings أو Polygons. يمكن وصف المنحنيات بواسطة LineStringSegment و Arc و Circle و CircleByCenterPoint. يمكن تشكيل الأسطح بشكل مشابه للمضلعات أو باستخدام المنحنيات. يمكن قراءة هذه الأشكال الإضافية كجزء من مجموعة بيانات أو استعلام ولكن لن يتم إنتاجها إذا تم تحويل SRS للشكل ، وبدلاً من ذلك سيتم إنشاء تمثيل LineString أو Polygon.

يمكن العثور على تفاصيل بنية GML لهذه الأشكال في مخططات geometryPrimitives.xsd و geometryBasic0d1d.xsd و geometryBasic2d.xsd و geometryAggregates.xsd.

يتم تصنيف المجموعات على النحو التالي:

مجموعة الهندسة
متعدد النقاط هدف
متعدد المنحنيات LineString ، منحنى
سطح متعدد مضلع ، سطح
MultiGeometry نقطة ، سلسلة خطية ، منحنى ، مضلع ، سطح

وظائف Apache Jena المكانية / المسندات الجغرافية WGS84

تحتوي الوحدة النمطية jena-spatial على العديد من وظائف SPARQL للاستعلام عن مجموعات البيانات باستخدام المسندات الجغرافية WGS84 لخطوط العرض (http://www.w3.org/2003/01/geo/wgs84_pos#lat) وخط الطول (http: //www.w3 .org / 2003/01 / geo / wgs84_pos # long). يتم دعم هذه الوظائف jena-spatial لكل من المسندات الجغرافية والحرفية الهندسية ، أي مجموعة بيانات GeoSPARQL. تم توفير وظائف مرشح SPARQL إضافية لتحويل الخصائص الجغرافية المسند إلى سلاسل WKT وحساب مسافات الدائرة العظمى والإقليدية.

يقتصر الشكل المسند الجغرافي للتمثيل المكاني على أشكال "النقطة" فقط في النظام المرجعي المكاني / الإحداثي WGS84. المسندات الجغرافية هي خصائص الميزة ولا تستخدم خصائص وبنية معيار GeoSPARQL ، بما في ذلك Geometry Literals. تتوفر طرق لتحويل مجموعات البيانات من المسندات الجغرافية إلى بنية GeoSPARQL ، راجع: io.github.galbiston.geosparql_jena.configuration.

تم تنفيذ العلاقات المكانية وإعادة كتابة الاستعلام لـ GeoSPARQL الموضحة سابقًا من أجل المسندات الجغرافية. ومع ذلك ، فإن بعض العلاقات المكانية فقط تكون صالحة لعلاقات من نقطة إلى نقطة. راجع الصفحات 8-10 من 11-052r4 معيار GeoSPARQL لمزيد من التفاصيل.

يمكن تحويل المسندات الجغرافية إلى Geometry Literals في الاستعلام ثم استخدامها مع وظائف مرشح GeoSPARQL.

بدلاً من ذلك ، يمكن استخدام المزيد من الأشكال والعلاقات وأنظمة الإسناد المكاني عن طريق تحويل مجموعة البيانات إلى بنية GeoSPARQL.

يمكن أن تحتوي مجموعات البيانات على كل من المسندات الجغرافية والحرفية الهندسية دون تدخل. ومع ذلك ، فإن مجموعة البيانات التي تحتوي على كلا النوعين ستفحص فقط تلك الميزات التي تحتوي على Geometry Literals للعلاقات المكانية ، أي أن التحقق من المسندات الجغرافية هو احتياطي عندما لا يتم العثور على Geometry Literals. ظزولاؤ ليس يوصى بإدراج خصائص المسند الجغرافية الجديدة بعد تحويل مجموعة البيانات إلى بنية GeoSPARQL (ما لم يتم تضمين Geometry و Geometry Literals المقابلة).

تتوفر وظائف التصفية هذه في http://jena.apache.org/function/spatial# namespace وهنا استخدم البادئة spatialF.

اسم وظيفة وصف
؟ wktString المكانية و: convertLatLon(؟ لات, ؟ lon) يحول قيم Lat و Lon المزدوجة إلى سلسلة WKT لنقطة باستخدام WGS84 SRS.
؟ wktString المكانية و: convertLatLonBox(؟ latMin, ؟ lonMin, ؟ latMax, ؟ lonMax) يحول قيم Lat و Lon المزدوجة إلى سلسلة WKT لمضلع يشكل صندوقًا باستخدام WGS84 SRS.
؟ منطقية مكاني و: يساوي(؟ geomLit1, ؟ geomLit2) صحيح ، إذا geomLit1 يساوي مكانيًا geomLit2.
؟ منطقية مكاني و: قريب(؟ geomLit1, ؟ geomLit2, ؟مسافه: بعد, ؟ UnitsURI) صحيح ، إذا geomLit1 ضمن مسافه: بعد من geomLit2 باستخدام المسافة الوحدات.
؟ منطقية مكاني و: داخل دائرة(؟ geomLit1, ؟ geomLit2, ؟مسافه: بعد, ؟ UnitsURI) صحيح ، إذا geomLit1 ضمن مسافه: بعد من geomLit2 باستخدام المسافة الوحدات.
؟راديان المكانية: الزاوية(؟ x1, ؟ y1, ؟ x2, ؟ y2) زاوية في اتجاه عقارب الساعة من المحور y من النقطة (x1، y1) إلى النقطة (x2، y2) في 0 إلى 2π راديان.
؟درجات مكاني F: زاوية(؟ x, ؟ y1, ؟ x2, ؟ y2) زاوية في اتجاه عقارب الساعة من المحور y من النقطة (x1، y1) إلى النقطة (x2، y2) في 0 إلى 360 درجة.
؟مسافه: بعد المكاني: المسافة(؟ geomLit1, ؟ geomLit2, ؟ UnitsURI) المسافة بين اثنين من حرفي الهندسة في المسافة الوحدات. يختار قياس المسافة بناءً على نوع SRS. Great Circle distance for Geographic SRS and Euclidean otherwise.
?radians spatialF:azimuth(?lat1, ?lon1, ?lat2, ?lon2) Forward azimuth clockwise from North between two Lat/Lon Points in 0 to 2π radians.
?degrees spatialF:azimuthDeg(?lat1, ?lon1, ?lat2, ?lon2) Forward azimuth clockwise from North between two Lat/Lon Points in 0 to 360 degrees.
?distance spatialF:greatCircle(?lat1, ?lon1, ?lat2, ?lon2, ?unitsURI) Great Circle distance (Vincenty formula) between two Lat/Lon Points in distance units.
?distance spatialF:greatCircleGeom(?geomLit1, ?geomLit2, ?unitsURI) Great Circle distance (Vincenty formula) between two Geometry Literals in distance units. Use http://www.opengis.net/def/function/geosparql/distance from GeoSPARQL standard for Euclidean distance.
?geomLit2 spatialF:transform(?geomLit1, ?datatypeURI, ?srsURI) Transform Geometry Literal by Datatype and SRS.
?geomLit2 spatialF:transformDatatype(?geomLit1, ?datatypeURI) Transform Geometry Literal by Datatype.
?geomLit2 spatialF:transformSRS(?geomLit1, ?srsURI) Transform Geometry Literal by SRS.

These property functions are available in the http://jena.apache.org/spatial# namespace and here use the prefix spatial . This is the same namespace as the jena-spatial functions utilise and these form direct replacements. The subject Feature may be bound, to test the pattern is true, or unbound, to find all cases the pattern is true. These property functions require a Spatial Index to be setup for the dataset.

الاختيارية ?limit parameter restricts the number of results returned. The default value is -1 which returns all results. No guarantee is given for ordering of results. الاختيارية ?unitsURI parameter specifies the units of a distance. The default value is kilometres through the string or resource http://www.opengis.net/def/uom/OGC/1.0/kilometre .

The spatial:equals property function behaves the same way as the main GeoSPARQL property functions. Either, both or neither of the subject and object can be bound. A Spatial Index is ليس required for the dataset with the spatial:equals property function.

Function Name وصف
?spatialObject1 spatial:equals ?spatialObject2 يجد spatialObjects (i.e. الميزات أو geometries) that are spatially equal.
?feature spatial:intersectBox(?latMin ?lonMin ?latMax ?lonMax [ ?limit]) يجد الميزات that intersect the provided box, up to the حد.
?feature spatial:intersectBoxGeom(?geomLit1 ?geomLit2 [ ?limit]) يجد الميزات that intersect the provided box, up to the حد.
?feature spatial:withinBox(?latMin ?lonMin ?latMax ?lonMax [ ?limit]) يجد الميزات that intersect the provided box, up to the حد.
?feature spatial:withinBoxGeom(?geomLit1 ?geomLit2 [ ?limit]) يجد الميزات that are within the provided box, up to the حد.
?feature spatial:nearby(?lat ?lon ?radius [ ?unitsURI [ ?limit]]) يجد الميزات that are within نصف القطر of the distance units, up to the حد.
?feature spatial:nearbyGeom(?geomLit ?radius [ ?unitsURI [ ?limit]]) يجد الميزات that are within نصف القطر of the distance units, up to the حد.
?feature spatial:withinCircle(?lat ?lon ?radius [ ?unitsURI [ ?limit]]) يجد الميزات that are within نصف القطر of the distance units, up to the حد.
?feature spatial:withinCircleGeom(?geomLit ?radius [ ?unitsURI [ ?limit]]) يجد الميزات that are within نصف القطر of the distance units, up to the حد.

The Cardinal Functions find all Features that are present in the specified direction. In Geographic spatial reference systems (SRS), e.g. WGS84 and CRS84, the East/West directions wrap around. Therefore, a search is made from the shape's edge for up to half the range of the SRS (i.e. 180 degrees in WGS84) and will continue across the East/West boundary if necessary. In other SRS, e.g. Projected onto a flat plane, the East/West check is made from the shape's edge to the farthest limit of the SRS range, i.e. there is no wrap around.

Cardinal Function Name وصف
?feature spatial:north(?lat ?lon [ ?limit]) يجد الميزات that are North of the Lat/Lon point (point to +90 degrees), up to the حد.
?feature spatial:northGeom(?geomLit [ ?limit]) يجد الميزات that are North of the Geometry Literal, up to the حد.
?feature spatial:south(?lat ?lon [ ?limit]) يجد الميزات that are South of the Lat/Lon point (point to -90 degrees), up to the حد.
?feature spatial:southGeom(?geomLit [ ?limit]) يجد الميزات that are South of the Geometry Literal, up to the حد.
?feature spatial:east(?lat ?lon [ ?limit]) يجد الميزات that are East of the Lat/Lon point (point plus 180 degrees longitude, wrapping round), up to the حد.
?feature spatial:eastGeom(?geomLit [ ?limit]) يجد الميزات that are East of the Geometry Literal, up to the حد.
?feature spatial:west(?lat ?lon [ ?limit]) يجد الميزات that are West of the Lat/Lon point (point minus 180 degrees longitude, wrapping round), up to the حد.
?feature spatial:westGeom(?geomLit [ ?limit]) يجد الميزات that are West of the Geometry Literal, up to the حد.

Geometry Property Filter Functions

The GeoSPARQL standard provides a set of properties related to geometries, see Section 8.4. These are applied on the Geometry resource and are automatically determined if not asserted in the data. However, it may be necessary to retrieve the properties of a Geometry Literal directly without an associated Geometry resource. Filter functions to do this have been included as part of the http://www.opengis.net/def/function/geosparql/ namespace as a minor variation to the GeoSPARQL standard. The relevant functions using the geof prefix are:

Geometry Property Filter Function Name وصف
?integer geof:dimension(?geometryLiteral) Topological dimension, e.g. 0 for Point, 1 for LineString and 2 for Polygon.
?integer geof:coordinateDimension(?geometryLiteral) Coordinate dimension, e.g. 2 for XY coordinates and 4 for XYZM coordinates.
?integer geof:spatialDimension(?geometryLiteral) Spatial dimension, e.g. 2 for XY coordinates and 3 for XYZM coordinates.
?boolean geof:isEmpty(?geometryLiteral) True, if geometry is empty.
?boolean geof:isSimple(?geometryLiteral) True, if geometry is simple.
?boolean geof:isValid(?geometryLiteral) True, if geometry is topologically valid.

A dataset that follows the GeoSPARQL Feature-Geometry-GeometryLiteral can have simpler SPARQL queries without needing to use these functions by taking advantage of the Query Rewriting functionality. The geof:isValid filter function and geo:isValid property for a Geometry resource are not part of the GeoSPARQL standard but have been included as a minor variation.

The following individuals have made contributions to this project:

Why Use This Implementation?

There are several implementations of the GeoSPARQL standard. The conformance and completeness of these implementations is difficult to ascertain and varies between features.

However, the following may be of interest when considering whether to use this implementation based on reviewing several alternatives.

This Implementation Other Implementations
Implements all six components of the GeoSPARQL standard. Generally partially implement the Geometry Topology and Geometry Extensions. Do not implement the Query Rewrite Extension.
Pure Java and does not require a supporting relational database. Configuration requires a single line of code (although Apache SIS may need some setting up, see above). Require setting up a database, configuring a geospatial extension and setting environment variables.
Uses Apache Jena, which conforms to the W3C standards for RDF and SPARQL. New versions of the standards will quickly feed through. Not fully RDF and SPARQL compliant, e.g. RDFS/OWL inferencing or SPARQL syntax. Adding your own schema may not produce inferences.
Automatically determines geometry properties and handles mixed cases of units or coordinate reference systems. The GeoSPARQL standard suggests this approach but does not require it. Tend to produce errors or no results in these situations.
Performs indexing and caching on-demand which reduces set-up time and only performs calculations that are required. Perform indexing in the data loading phase and initialisation phase, which can lead to lengthy delays (even on relatively small datasets).
Uses JTS which does not truncate coordinate precision and applies spatial equality. May truncate coordinate precision and apply lexical equality, which is quicker but does not comply with the GeoSPARQL standard.


10. Interval and Ratio Levels

Interval و نسبة are the two highest levels of measurement in Stevens' original system. Unlike nominal- and ordinal-level data, which are qualitative in nature, interval- and ratio-level data are quantitative. Examples of interval level data include temperature and year. Examples of ratio level data include distance and area (e.g., acreage). The scales are similar in so far as units of measurement are arbitrary (Celsius versus Fahrenheit, Gregorian versus Islamic calendar, English versus metric units). The scales differ in that the zero point is arbitrary on interval scales, but not on ratio scales. For instance, zero degrees Fahrenheit and zero degrees Celsius are different temperatures, and neither indicates the absence of temperature. Zero meters and zero feet mean exactly the same thing, however. An implication of this difference is that a quantity of 20 measured at the ratio scale is twice the value of 10, a relation that does not hold true for quantities measured at the interval level (20 degrees is not twice as warm as 10 degrees).

Because interval and ratio level data represent positions along continuous number lines, rather than members of discrete categories, they are also amenable to analysis using inferential statistical techniques. Correlation and regression, for example, are commonly used to evaluate relationships between two or more data variables. Such techniques enable analysts to infer not only the form of a relationship between two quantitative data sets, but also the strength of the relationship.


4.5. Building Indexes

Indexes are what make using a spatial database for large data sets possible. Without indexing, any search for a feature would require a "sequential scan" of every record in the database. Indexing speeds up searching by organizing the data into a search tree which can be quickly traversed to find a particular record. PostgreSQL supports three kinds of indexes by default: B-Tree indexes, R-Tree indexes, and GiST indexes.

B-Trees are used for data which can be sorted along one axis for example, numbers, letters, dates. GIS data cannot be rationally sorted along one axis (which is greater, (0,0) or (0,1) or (1,0)?) so B-Tree indexing is of no use for us.

R-Trees break up data into rectangles, and sub-rectangles, and sub-sub rectangles, etc. R-Trees are used by some spatial databases to index GIS data, but the PostgreSQL R-Tree implementation is not as robust as the GiST implementation.

GiST (Generalized Search Trees) indexes break up data into "things to one side", "things which overlap", "things which are inside" and can be used on a wide range of data-types, including GIS data. PostGIS uses an R-Tree index implemented on top of GiST to index GIS data.

4.5.1. GiST Indexes

GiST stands for "Generalized Search Tree" and is a generic form of indexing. In addition to GIS indexing, GiST is used to speed up searches on all kinds of irregular data structures (integer arrays, spectral data, etc) which are not amenable to normal B-Tree indexing.

Once a GIS data table exceeds a few thousand rows, you will want to build an index to speed up spatial searches of the data (unless all your searches are based on attributes, in which case you'll want to build a normal index on the attribute fields).

The syntax for building a GiST index on a "geometry" column is as follows:

Building a spatial index is a computationally intensive exercise: on tables of around 1 million rows, on a 300MHz Solaris machine, we have found building a GiST index takes about 1 hour. After building an index, it is important to force PostgreSQL to collect table statistics, which are used to optimize query plans:

GiST indexes have two advantages over R-Tree indexes in PostgreSQL. Firstly, GiST indexes are "null safe", meaning they can index columns which include null values. Secondly, GiST indexes support the concept of "lossiness" which is important when dealing with GIS objects larger than the PostgreSQL 8K page size. Lossiness allows PostgreSQL to store only the "important" part of an object in an index -- in the case of GIS objects, just the bounding box. GIS objects larger than 8K will cause R-Tree indexes to fail in the process of being built.

4.5.2. Using Indexes

Ordinarily, indexes invisibly speed up data access: once the index is built, the query planner transparently decides when to use index information to speed up a query plan. Unfortunately, the PostgreSQL query planner does not optimize the use of GiST indexes well, so sometimes searches which should use a spatial index instead default to a sequence scan of the whole table.

If you find your spatial indexes are not being used (or your attribute indexes, for that matter) there are a couple things you can do:

Firstly, make sure statistics are gathered about the number and distributions of values in a table, to provide the query planner with better information to make decisions around index usage. For PostgreSQL 7.4 installations and below this is done by running update_geometry_stats([table_name, column_name]) (compute distribution) and VACUUM ANALYZE [table_name] [column_name] (compute number of values). Starting with PostgreSQL 8.0 running VACUUM ANALYZE will do both operations. You should regularly vacuum your databases anyways -- many PostgreSQL DBAs have مكنسة كهرباء run as an off-peak cron job on a regular basis.

If vacuuming does not work, you can force the planner to use the index information by using the SET ENABLE_SEQSCAN=OFF قيادة. You should only use this command sparingly, and only on spatially indexed queries: generally speaking, the planner knows better than you do about when to use normal B-Tree indexes. Once you have run your query, you should consider setting ENABLE_SEQSCAN back on, so that other queries will utilize the planner as normal.

As of version 0.6, it should not be necessary to force the planner to use the index with ENABLE_SEQSCAN .

If you find the planner wrong about the cost of sequential vs index scans try reducing the value of random_page_cost in postgresql.conf or using SET random_page_cost=#. Default value for the parameter is 4, try setting it to 1 or 2. Decrementing the value makes the planner more inclined of using Index scans.


Apache Jena Spatial Functions/WGS84 Geo Predicates

The jena-spatial module contains several SPARQL functions for querying datasets using the WGS84 Geo predicates for latitude ( http://www.w3.org/2003/01/geo/wgs84_pos#lat ) and longitude ( http://www.w3.org/2003/01/geo/wgs84_pos#long ). These jena-spatial functions are supported for both Geo predicates and Geometry Literals, i.e. a GeoSPARQL dataset. Additional SPARQL filter functions have been provided to convert Geo predicate properties into WKT strings and calculate Great Circle and Euclidean distances. The jena-spatial functions require setting up a Spatial Index for the target Dataset, e.g. GeoSPARQLConfig.setupSpatialIndex(dataset) , see Spatial Index section.

Supported Features

The Geo predicate form of spatial representation is restricted to only &lsquoPoint&rsquo shapes in the WGS84 spatial/coordinate reference system. The Geo predicates are properties of the Feature and do not use the properties and structure of the GeoSPARQL standard, including Geometry Literals. Methods are available to convert datasets from Geo predicates to GeoSPARQL structure, see: org.apache.jena.geosparql.configuration.GeoSPARQLOperations

The spatial relations and query re-writing of GeoSPARQL outlined previously has been implemented for Geo predicates. However, only certain spatial relations are valid for Point to Point relationships. Refer to pages 8-10 of 11-052r4 GeoSPARQL standard for more details.

Geo predicates can be converted to Geometry Literals in query and then used with the GeoSPARQL filter functions.

Alternatively, utilising more shapes, relations and spatial reference systems can be achieved by converting the dataset to the GeoSPARQL structure.

Datasets can contain both Geo predicates and Geometry Literals without interference. However, a dataset containing both types will only examine those Features which have Geometry Literals for spatial relations, i.e. the check for Geo predicates is a fallback when Geometry Literals aren&rsquot found. Therefore, it is ليس recommended to insert new Geo predicate properties after a dataset has been converted to GeoSPARQL structure (unless corresponding Geometry and Geometry Literals are included).

Filter Functions

These filter functions are available in the http://jena.apache.org/function/spatial# namespace and here use the prefix spatialF .

Function Name وصف
?wktString spatialF:convertLatLon(?lat, ?lon) Converts Lat and Lon double values into WKT string of a Point with WGS84 SRS.
?wktString spatialF:convertLatLonBox(?latMin, ?lonMin, ?latMax, ?lonMax) Converts Lat and Lon double values into WKT string of a Polygon forming a box with WGS84 SRS.
?boolean spatialF:equals(?geomLit1, ?geomLit2) True, if geomLit1 is spatially equal to geomLit2.
?boolean spatialF:nearby(?geomLit1, ?geomLit2, ?distance, ?unitsURI) True, if geomLit1 is within distance من geomLit2 using the distance units.
?boolean spatialF:withinCircle(?geomLit1, ?geomLit2, ?distance, ?unitsURI) True, if geomLit1 is within distance من geomLit2 using the distance units.
?radians spatialF:angle(?x1, ?y1, ?x2, ?y2) Angle clockwise from y-axis from Point(x1,y1) to Point (x2,y2) in 0 to 2π radians.
?degrees spatialF:angleDeg(?x, ?y1, ?x2, ?y2) Angle clockwise from y-axis from Point(x1,y1) to Point (x2,y2) in 0 to 360 degrees.
?distance spatialF:distance(?geomLit1, ?geomLit2, ?unitsURI) Distance between two Geometry Literals in distance units. Chooses distance measure based on SRS type. Great Circle distance for Geographic SRS and Euclidean otherwise.
?radians spatialF:azimuth(?lat1, ?lon1, ?lat2, ?lon2) Forward azimuth clockwise from North between two Lat/Lon Points in 0 to 2π radians.
?degrees spatialF:azimuthDeg(?lat1, ?lon1, ?lat2, ?lon2) Forward azimuth clockwise from North between two Lat/Lon Points in 0 to 360 degrees.
?distance spatialF:greatCircle(?lat1, ?lon1, ?lat2, ?lon2, ?unitsURI) Great Circle distance (Vincenty formula) between two Lat/Lon Points in distance units.
?distance spatialF:greatCircleGeom(?geomLit1, ?geomLit2, ?unitsURI) Great Circle distance (Vincenty formula) between two Geometry Literals in distance units. Use http://www.opengis.net/def/function/geosparql/distance from GeoSPARQL standard for Euclidean distance.
?geomLit2 spatialF:transform(?geomLit1, ?datatypeURI, ?srsURI) Transform Geometry Literal by Datatype and SRS.
?geomLit2 spatialF:transformDatatype(?geomLit1, ?datatypeURI) Transform Geometry Literal by Datatype.
?geomLit2 spatialF:transformSRS(?geomLit1, ?srsURI) Transform Geometry Literal by SRS.

Property Functions

These property functions are available in the http://jena.apache.org/spatial# namespace and here use the prefix spatial . This is the same namespace as the jena-spatial functions utilise and these form direct replacements. The subject Feature may be bound, to test the pattern is true, or unbound, to find all cases the pattern is true. These property functions require a Spatial Index to be setup for the dataset.

الاختيارية ?limit parameter restricts the number of results returned. The default value is -1 which returns all results. No guarantee is given for ordering of results. الاختيارية ?unitsURI parameter specifies the units of a distance. The default value is kilometres through the string or resource http://www.opengis.net/def/uom/OGC/1.0/kilometre .

The spatial:equals property function behaves the same way as the main GeoSPARQL property functions. Either, both or neither of the subject and object can be bound. A Spatial Index is ليس required for the dataset with the spatial:equals property function.

Function Name وصف
?spatialObject1 spatial:equals ?spatialObject2 يجد spatialObjects (i.e. الميزات أو geometries) that are spatially equal.
?feature spatial:intersectBox(?latMin ?lonMin ?latMax ?lonMax [ ?limit]) يجد الميزات that intersect the provided box, up to the حد.
?feature spatial:intersectBoxGeom(?geomLit1 ?geomLit2 [ ?limit]) يجد الميزات that intersect the provided box, up to the حد.
?feature spatial:withinBox(?latMin ?lonMin ?latMax ?lonMax [ ?limit]) يجد الميزات that intersect the provided box, up to the حد.
?feature spatial:withinBoxGeom(?geomLit1 ?geomLit2 [ ?limit]) يجد الميزات that are within the provided box, up to the حد.
?feature spatial:nearby(?lat ?lon ?radius [ ?unitsURI [ ?limit]]) يجد الميزات that are within نصف القطر of the distance units, up to the حد.
?feature spatial:nearbyGeom(?geomLit ?radius [ ?unitsURI [ ?limit]]) يجد الميزات that are within نصف القطر of the distance units, up to the حد.
?feature spatial:withinCircle(?lat ?lon ?radius [ ?unitsURI [ ?limit]]) يجد الميزات that are within نصف القطر of the distance units, up to the حد.
?feature spatial:withinCircleGeom(?geomLit ?radius [ ?unitsURI [ ?limit]]) يجد الميزات that are within نصف القطر of the distance units, up to the حد.

The Cardinal Functions find all Features that are present in the specified direction. In Geographic spatial reference systems (SRS), e.g. WGS84 and CRS84, the East/West directions wrap around. Therefore, a search is made from the shape&rsquos edge for up to half the range of the SRS (i.e. 180 degrees in WGS84) and will continue across the East/West boundary if necessary. In other SRS, e.g. Projected onto a flat plane, the East/West check is made from the shape&rsquos edge to the farthest limit of the SRS range, i.e. there is no wrap around.

Cardinal Function Name وصف
?feature spatial:north(?lat ?lon [ ?limit]) يجد الميزات that are North of the Lat/Lon point (point to +90 degrees), up to the حد.
?feature spatial:northGeom(?geomLit [ ?limit]) يجد الميزات that are North of the Geometry Literal, up to the حد.
?feature spatial:south(?lat ?lon [ ?limit]) يجد الميزات that are South of the Lat/Lon point (point to -90 degrees), up to the حد.
?feature spatial:southGeom(?geomLit [ ?limit]) يجد الميزات that are South of the Geometry Literal, up to the حد.
?feature spatial:east(?lat ?lon [ ?limit]) يجد الميزات that are East of the Lat/Lon point (point plus 180 degrees longitude, wrapping round), up to the حد.
?feature spatial:eastGeom(?geomLit [ ?limit]) يجد الميزات that are East of the Geometry Literal, up to the حد.
?feature spatial:west(?lat ?lon [ ?limit]) يجد الميزات that are West of the Lat/Lon point (point minus 180 degrees longitude, wrapping round), up to the حد.
?feature spatial:westGeom(?geomLit [ ?limit]) يجد الميزات that are West of the Geometry Literal, up to the حد.


Plans and surveys

There are many types of plans you can search for online.

Historical survey plans and field notes are held at Public Record Office Victoria.

Parish plans define the positions and dimensions of all Crown allotments within a parish. You can search and view parish plans online through LANDATA or an authorised information broker.

Plans of subdivision depict the break-up of a piece freehold land, showing parcels of land (commonly called lots) that can be sold separately.

If you know the plan of subdivision number, you can easily search for a plan online for a fee through LANDATA® or an authorised information broker.

Survey plans and abstracts of field records are certified by licensed surveyors and show a summary of information used by a surveyor to establish the boundaries and dimensions of a piece of land.

These plans commonly show reference marks, building boundaries, fencing and measurement notations.


As far as off-the-shelf solutions go, many commercial 802.11 networking infrastructures support triangulation of both host computers and "rogue" APs by comparing the signal strength of the source among all the APs that can see the signal. I've used trapeze wireless systems that import autocad maps that include things like building materials (to compensate for different signal attenuations from drywall vs brick vs steel reinforced concrete). It then draws a picture that has all stations and APs. I believe cisco and aruba have similar tools.

You can't do it with one or even two observing stations, but you could probably do it with a mobile observing station and GPS. I'm not sure what software there is to do such a thing but the usual suspects such as netstumbler may well support such a feature.

You can do some basic Radio Direction Finding to locate the signal.

At 2.4 GHz it is easy to come across antennas with small beamwidths. Sweeping one around while watching the signal strength should give you a good idea of what direction the AP is in.

Do that from a few physically separated locations and you will have the beginnings of a triangulation. It doesn't have to be super accurate to get a good idea of where the transmitter is located.

The faster your signal strength indicator, the better. On a radio with an analog meter, it's amazing how fast you can "walk down" a transmitter with a modest yagi antenna.

By itself, there is no way to get that information from a wifi signal. Google, however, has indexed wifi access points with their locations. So they are able to tell where you are based on the wifi AP you are connected to. In a case like that, it is possible to get a location based on wifi.

If you've got an android phone try OpenSignalMaps, click on the wifi/cells toggle on the bottom left to see the wifi info. Shows the positions of wifi routers on a map.

I would like to point your attention to the following project and software:

The ghetto way of doing the same, is to use a directional antenna with netstumbler, or something that shows signal strength. Find the maximum strength with the directional antenna, mark the angle, and try again from another point or two. Triangulate, and you'll know the location of the access point.

Or spend your weekend building some insane tripod location thingy :).

Sometimes if you plug the gateway IP into an IP to Location database you get decent results. You might need to use traceroute to find the first IP that isn't one of the RFC1918 private networks IPs.

As mentioned you can use radio direction finding to locate the signal. That works by taking multiple antennas and doing an operation called beam forming by timing variance to get the general direction. It's also possible to do a timing triangulation if you have three receivers that can all pick up the signal and you know the exact location of each.

The military uses radio direction finding most of the time from mobile units. They log position, signal strength, and cut bearing and a computer lays these on a map over time and you'll get a good idea of the transmitter location.

Another method used is basically the old warm/cold game. You have a unit that logs position and signal strength and walk around until you find it. The nicer units will overlay a map to give you a general idea where to go but over a bit of time you'll get the location.


A big business built around a tough job

For local logistics companies and the Government of Nepal, Everest is big business. A typical spot on a commercial team costs anywhere from $40,000 to $100,000 depending on the level of service and the expertise of the outfitter. The Ministry of Tourism reported collecting $5.2 million in 2018 permit fees.

The industry is built on the backs of a small cadre of professional Nepalese guides who work together each spring to prepare the route with fixed ropes and ladders, stock each camp with essentials like tents, stoves, bottled oxygen, and food, and then patiently coach their foreign guests up to the summit. Although historically it was the Sherpas—the Tibetan tribe of people who live closest to the mountain—who were hired by expeditions to carry loads of supplies up the mountain, today there are multiple ethnic groups who find employment on the mountain, leading to the less-catchy moniker of “high-altitude mountain worker.” For a typical three-to-four-month Everest expedition, most earn between $2,500 and $5,000. In recent years, thanks to educational opportunities like the Khumbu Climbing Center, Nepalese guides have begun to receive training and certifications to international standards.


شاهد الفيديو: إيجاد معادلة خط المستقيم من الرسم البياني بأسهل طريقة مع الشرح و التمارين رياضيات2021 VMBO HAVO