في الجزء الأول ، قطعنا مدينة شرطية من مجموعة بيانات كبيرة وتركنا فقط بيانات تحتوي على عنوان بداخلها. تم تفسير العناوين على أنها تنتمي إلى هذه المدينة. أولئك. تعرف بالضبط البلد الذي كانوا فيه ، وفي أي منطقة ، وما إلى ذلك. ولكن ماذا لو احتجنا إلى عناوين ليست منطقة محلية واحدة ، بل منطقة بأكملها ، أو ربما حتى عدة بلدان؟ كيف تعرف من أين هو؟
وعلى الرغم من أنه من الممكن في OpenStreetMap الإشارة في كل منزل إلى أي بلد أو منطقة أو أسفل التسلسل الهرمي ، يتم استخدام طريقة مختصرة في روسيا - أي فقط رقم الشارع والمنزل. سيتم تنفيذ جميع أعمال القرد في هيكلة العنوان لنا بواسطة الكمبيوتر. سوف يفعل ذلك بشكل أسرع وأكثر صحة ، إذا كانت ، بالطبع ، جميع البيانات اللازمة ستكون تحت تصرفه.
تدريب
سأجرب في سارانسك ، أو بالأحرى ، في منطقتها الحضرية - عن طريق قصها بمستطيل ، مع التغطية التالية: الحد الأدنى (45 54) ، الحد العلوي (45.5 54.3). أحفظ المقطع من التفريغ بتنسيق pbf ، لأن الأداة التالية تعمل معه:
osmconvert -b=45,54,45.5,54.3 RU-local.o5m -o=SaranskGO.pbfالفكرة بأكملها الآن هي إضافة علامات إلى جميع المباني مع العنوان الذي تقع فيه التسوية. سيتم حساب ذلك عن طريق دخول هندسة المنزل في محيط المستوطنة. للقيام بذلك، نحن بحاجة إلى OsmAreaTag المساعد ل التناضح (أ صفا أكثر تفصيلا من البرنامج المساعد من المؤلف ). نشر المؤلف النسخة المترجمة من البرنامج المساعد هنا . يمكن التقاط التناضح نفسه من الجيثب . هذا تطبيق Java ، لذا من الواضح أنه لن يعمل بدونه.
تثبيت البرنامج المساعد
ل التناضح ل رؤية osmareatag المساعد ، يجب أن يكون موجودا في الإضافات مجلد من الدليل الحالي، وهو إلى حد ما غير مريح . لذلك ، يمكن وضعها في الدليل الرئيسي للمستخدم ، وبالنسبة للنوافذ سيكون c:\Users\<>\.openstreetmap\osmosis\pluginsإما في c:\Users\<>\AppData\Roaming\openstreetmap\osmosis\plugins. هناك وتفريغ محتويات أرشيف البرنامج المساعد ، يجب أن يكون مجلد osmareatag-1.3.zip في مجلد الإضافات .
وضع القواعد
سأخبرك هنا بنظرية صغيرة حول كيفية العمل مع هذا البرنامج المساعد. فيما يلي مثال على ملف التكوين الأساسي:
<?xml version="1.0" encoding="UTF-8"?>
<tag-processing>
<area id="national-boundary" cache-file="national-boundary.idx">
<match type="relation">
<tag k="boundary" v="administrative"/>
<tag k="admin_level" v="2"/>
</match>
</area>
<transform>
<name>Country</name>
<match>
<tag k="building" v=".*"/>
<tag k="addr:housenumber" v=".*"/>
<inside area="national-boundary"/>
</match>
<output>
<add-tag k="addr:country" v="${ISO3166-1}" context-area="national-boundary"/>
</output>
</transform>
</tag-processing> — . area id, , . match , OSM, . , .. . cache-file OSM . - , - , . , .
— , transform. match , : inside , area .
, output , , , , , national-boundary ISO3166-1. , .
, , , . . , , .
:
<?xml version="1.0" encoding="UTF-8"?>
<tag-processing>
<area id="place">
<match>
<tag k="place" v="city|town|village|hamlet|isolated_dwelling|allotments"/>
</match>
</area>
<transform>
<name>Place</name>
<match>
<tag k="building" v=".*"/>
<tag k="addr:housenumber" v=".*"/>
<inside area="place"/>
</match>
<output>
<add-tag k="addr:city-auto" v="${name}" context-area="place"/>
</output>
</transform>
</tag-processing> addr:city-auto, , OSM. osm-xml, . :
call osmosis-0.48.3\bin\osmosis.bat --read-pbf SaranskGO.pbf --lp --tag-area-content file=tag-building-addr-place.xml --write-xml SaranskGO.place.osmtag-building-addr-place.xml - , .
.. - , . , . . .
<way id="103738775" version="2" timestamp="2019-09-20T18:28:15Z" uid="10124028" user="MarinaAR" changeset="74731679">
<nd ref="1197639591"/>
<nd ref="1197639690"/>
<nd ref="1197639206"/>
<nd ref="1197639237"/>
<nd ref="1197639591"/>
<tag k="building" v="yes"/>
<tag k="addr:city" v=""/>
<tag k="addr:street" v=" "/>
<tag k="addr:housenumber" v="5"/>
<tag k="addr:city-auto" v=""/>
</way>, . , , , CSV, QGIS. OSM, OSM , .. - . CSV.

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