سؤال

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

لدي بعض الأفكار حتى الآن ولكني أتساءل عما إذا كان لدى أي شخص أي أفكار حول أي مما يلي:

  • ما هو أفضل نهج لمعالجة هذه المشكلة بطريقة فعالة؟
  • ما هو المكان المناسب للعثور عليه وما هو التنسيق المناسب لحدود الولاية/المقاطعة في أمريكا الشمالية

كبداية، إليك فكرتان رئيسيتان لدي:

  1. قم بتقسيم أمريكا الشمالية إلى شبكة مع تعيين كل مستطيل في الشبكة لمقاطعة ولاية معينة.قم بالبحث في هذا الجدول (الذي ينمو بسرعة كلما أردت أن تكون أكثر دقة) بناءً على خط العرض ثم خط الطول (أو العكس).
  2. حدد المضلعات لكل حالة وقم بإجراء نوع من العمليات الحسابية لتحديد المضلع الذي يقع فيه زوج خطوط العرض/الطول.لست متأكدا بالضبط من كيفية القيام بذلك.تتبادر إلى الذهن خرائط صور HTML كطريقة لتحديد حدود الولاية/المقاطعة.

أنا أعمل في لغة بايثون للمهتمين أو أولئك الذين قد يكون لديهم مكتبة جميلة يرغبون في اقتراحها.

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

هل كانت مفيدة؟

المحلول

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

نصائح أخرى

لقد قمت بإنشاء وحدة ترميز جغرافي عكسي غير متصلة بالإنترنت للبلدان: https://bitbucket.org/richardpenman/reverse_geocode

>>> import reverse_geocode 
>>> coordinates = (-37.81, 144.96), (31.76, 35.21)
>>> reverse_geocode.search(coordinates)
[{'city': 'Melbourne', 'code': 'AU', 'country': 'Australia'},
 {'city': 'Jerusalem', 'code': 'IL', 'country': 'Israel'}]

سأرى ما إذا كان بإمكاني إضافة بيانات للولايات.

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

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

إذا كنت بحاجة إلى بيانات العنوان، فسيكون الحل دون الاتصال بالإنترنت هو استخدام Microsoft Mappoint.

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

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top