سیستم های شبکه ای برای تجزیه و تحلیل مجموعه داده های بزرگ فضایی و تقسیم مناطق زمین به سلولهای شبکه قابل شناسایی ، حیاتی هستند. Uber با در نظر داشتن این نکته ، سیستم نمایه سازی Geospatial Indexing H3 را توسعه داد ، یک سیستم شبکه ای که برای تجسم موثر و کاوش داده های مکانی و بهینه سازی قیمت سواری و ارسال استفاده می شود.
بیایید تفاوت های ظریف H3 را از ایزاک برودسکی ، بنیانگذار Unfolded بیاموزیم . وی با سابقه علوم کامپیوتر و مهندسی نرم افزار ، قبلاً در Uber’s Marketplace کار می کرد ، که قلب فعالیت آنها است. تطبیق سوار و راننده ، قیمت پویا و افزایش ، راهنمایی برای شرکای راننده و غیره. همه مواردی که بر آنچه مردم پویایی بازار یا عرضه و تقاضا می نامند تأثیر می گذارد.
آیزاک چند خوشه بزرگ Elasticsearch را اجرا کرد و داده های مکانی را برای درک این بازارها ارائه داد. قیمت گذاری پویا به اطلاعات مکانی احتیاج دارد و از این طریق او با پروژه H3 تماس گرفت . در ابتدا ، وی پروژه را از طرف داده و سپس از طرف نشر و منبع آزاد هدایت می کرد.
H3 چه نوع سیستم شبکه ای است؟
اصطلاح علمی H3 یک سیستم شبکه جهانی گسسته است. این یک سیستم گسسته است و دنیا را به سلولهای گسسته تبدیل می کند. هر موقعیتی در جهان دارای یک شناسه سلول است که با آن مرتبط است. جهانی است فرقی نمی کند شما در قطب شمال ، قطب جنوب ، ضد نصف النهار باشید ، در وسط اقیانوس آرام یا جایی در تگزاس ، این شما را تحت پوشش قرار می دهد.
H3 همچنین یک سیستم شبکه است. این نه تنها یک شبکه با وضوح واحد با وضوح مشخص (سلول یا اندازه) است ، بلکه یک سیستم از همه آنهاست. تمام 16 وضوح شبکه به یکدیگر مربوط می شوند. به عنوان مثال ، شبکه با وضوح 10 با تقسیم شبکه با وضوح 9 در سیستم H3 و غیره ایجاد می شود.
چرا شش ضلعی ها را برای H3 انتخاب کردید؟
وقتی می گوییم H3 شبکه سلسله مراتبی است ، به علاوه شش ضلعی است ، مردم را از این کار دور می کند.
در H3 ، هر سلول را به هفت سلول کوچکتر تقسیم می کنیم. اگر بخواهید آن را ترسیم کنید ، متوجه می شوید که مناسب نیست. ما مجبور شدیم تا سازگار شویم تا به نتیجه برسد. چرا؟ زیرا باعث می شود که این معاملات را انجام دهیم ، و نوعی موارد عجیب و غریب با آن وجود دارد.
ما به شکلی نیاز داشتیم که بتوانیم روی کل زمین کاشی کاری کنیم. برخی از پنج ضلعی ها در سیستم H3 وجود دارد ، اما ما آنها را در مکان های خارج از جاده قرار می دهیم که امیدواریم مجبور به برخورد با آنها نباشیم. ما همچنین باید چیزهایی را که در دنیای واقعی در حال حرکت هستند ، مدلسازی کنیم. این مورد اصلی استفاده Uber برای آن است. شش ضلعی ها این خاصیت شسته و رفته را دارند. همه همسایه ها با هم فاصله دارند.
برای میادین ، چهار همسایه از یک امتیاز برخوردار هستند. اما پس از آن چهار همسایه تمام نقاط خود را با آن مربع تقسیم می کنند و این همسایگان از مرکز اصلی فاصله دیگری از مرکز دارند. با شش ضلعی ها ، همه همسایه ها با یکدیگر فاصله دارند. با این کار اجرای انواع الگوریتم های مختلف در بالای شبکه بسیار راحت تر است.
چگونه مشکلات رایج مرتبط با شش ضلعی را مدیریت می کنید؟
ما نمی توانیم آن را به طور کامل حل کنیم. اما می توانیم به کاربران کمک کنیم تا از موارد مشکل ساز جلوگیری کنند.
وقتی در حال تبدیل به شبکه H3 هستید – یک نقطه ، یک چند ضلعی یا هر نوع شکلی ، به H3 هر دو مختصات مربوط به آن نقطه را می دهید ، به علاوه یک وضوح و یک عملیات نمایه سازی. این به شما کمک می کند تا در داخل سیستم شبکه با آن کار کنید. عملیات نمایه سازی دقیقاً در همان وضوح است.
اگر به سیستم بگویم ، “من می خواهم این نقطه را در وضوح 8 فهرست کنم” ، این سلول به من می دهد که دقیقاً دارای رزولوشن 8 در داخل H3 است ، بدون اینکه تحت تأثیر هرگونه تحریف قرار گیرد. این مشکل زمانی اتفاق می افتد که بخواهید بین رزولوشن های مختلف شبکه H3 حرکت کنید.
وقتی H3 سلول ها را تقسیم می کند ، آنها را از یک رزولوشن به رزولوشن دیگر کمی جبران می کند. این باعث ایجاد یک الگوی زیگزاگ یا دندانه دار در اطراف لبه سلول ها می شود. هنگام جابجایی بین یک رزولوشن به رزولوشن دیگر ، به عنوان مثال وقتی دقت خود رزولوشن را که به رزولوشن 7 رسیدیم کوتاه کنید ، کمی از قسمت سلول وجود دارد که اگر بخواهید آن سلول را ارائه دهید یک خطا است. طبق محاسبات من ، 7٪ – 8٪ مساحت خطا است.
تحلیل شما با این کار می تواند خوب باشد. شاید شما داده های خود را از GPS گرفته اید و مطمئن نیستید که دقیقاً این نقطه کجا بوده است ، در این صورت شما فقط از آنجا ادامه می دهید.
برای برخی موارد استفاده در مواردی که می خواهید این مرزهای دقیق را در سلول ها حفظ کنید ، باید بیشتر مراقب باشید تا اطمینان حاصل کنید که داده ها را با وضوح متفاوت از آنچه در ابتدا در ایندکس قرار داده اید ، ارائه نمی دهید. به عنوان مثال ، می توانید موقعیت فهرست را کوتاه کنید تا در هنگام ذخیره سازی داده ها در یک پایگاه داده ، فضای بیشتری را ذخیره کنید. وقتی آن را ارائه می دهید ، از وضوح اصلی استفاده کنید.
آیا می توانید چند نمونه از استفاده از H3 را به اشتراک بگذارید؟
بگویید می خواهید تراکم ساختمان ها یا تعداد ساختمانهای یک منطقه یا مناطق مختلف را محاسبه کنید. با استفاده از H3 ، ما با وارد کردن داده ها ، چند ضلعی ها و هر گونه اطلاعات مرتبط با آن ساختمان ها ، شروع می کنیم. H3 توابعی دارد که ما از آنها برای تبدیل از این داده ها ، یک شکل نقطه ای یا چند ضلعی ، به شبکه H3 استفاده می کنیم.
این توابع به چندین زبان برنامه نویسی و پایگاه داده های مختلف پیوند دارند. کمی تلاش خود را در حال حاضر انجام دهید. شاید شما Python ، R یا Java یا یکی از زبانهای برنامه نویسی دیگر را بلد باشید . اگر از پایگاه داده های Postgres ، Elasticsearch یا مشابه آن استفاده می کنید ، می توانید این کار را در آن محیط انجام دهید.
از آنجا تابعی را در H3 به نام polyfill انتخاب کنید. یک چند ضلعی ورودی می گیرد و شاخص های H3 را که آن را پوشانده اند ، پیدا می کند. Polyfill از نظر نحوه ساخت یک سابقه عجیب دارد. برخی فرضیات را ایجاد می کند که شما می خواهید پوشش انحصاری داشته باشید. در مورد ما ، به نظر نمی رسد که ما می خواهیم چنین چیزی را داشته باشیم ، بنابراین ممکن است آن را با وضوح کمی بالاتر از حد معمول آن ، نمایه کنیم.
نتیجه لیستی از نمایه ها برای هر ساختمان است. اکنون می توانید از ابزارهای معمول پردازش اطلاعات خارج از قفسه خود استفاده کنید.
این یکی از نکات جالب در مورد H3 است. این ابزارهای پردازش داده که ما برای انواع دیگر داده ها استفاده می کنیم ، طول می کشد و آنها را برای داده های مکانی استفاده می کند. واقعا خوب مقیاس می شود. اگر می خواستید از Pandas ، Spark یا Python برای این کار استفاده کنید ، می توانستید این کار را انجام دهید. اگر می خواهید از یک پایگاه داده خارج از قفسه استفاده کنید ، می توانید از آن استفاده کنید زیرا آنها قادر به شناسایی این شناسه های H3 به عنوان رشته یا عدد صحیح هستند و به طور موثر با آنها کار می کنند.
هنگامی که چنین چیزی را دارید ، منبع داده خود را دارید که با استفاده از سیستم H3 ساخته شده است و می توانید از آن برای تجزیه و تحلیل استفاده کنید. شما آنها را از شناسه H3 به یک مقدار متریک برای آن سلول ترسیم کرده اید. می توانید جستجوی پایگاه داده را انجام دهید ، و می توانید بگویید ، “من در این منطقه هستم ، می خواهم بدانم چند ساختمان در اطراف من وجود دارد.” این فقط باید بررسی کند که من در کجا هستم ، شناسه H3 را پیدا می کنم و سپس آن را در یک پایگاه داده که برای شناسایی نقشه از شناسه H3 به آن مقدار متریک تنظیم شده است ، جستجو می کنم.
در مرحله بعد ، شما همچنین می توانید تجسم را انجام دهید و لیست خود را به یک ابزار تجسم مانند Kepler.gl یاDec.gl ارسال کنید ، که می تواند شناسه های H3 را درک کند. می توانید نقشه مکانی از این ساختمانها در دانمارک ایجاد کنید.
توجه داشته باشید که این امر بدون تبدیل داده ها بین قالب های مختلف در حال انجام است. شما می توانید همه این کارهای مختلف ، تجزیه و تحلیل و مدل سازی ، جستجو ، جستجو ، توابع نمایه سازی فضایی و تجسم را انجام دهید ، همه با داده ها در همان قالب نگهداری می شوند.
آیا می توان چندین مقدار را به شناسه متصل کرد؟
H3 درمورد پیوستن مقادیر متعدد به شناسه نظری ندارد. واقعاً نمی داند چه چیزی را در کنار آن در پایگاه داده خود قرار می دهید. می توانید یک پایگاه داده در یک سیستم Big Data ایجاد کنید که یکی از آن ستون ها شناسه H3 باشد. ستون های دیگر می توانند در محدودیت های آن پایگاه داده هر آنچه را که می خواهید باشند. می توانید معیارهای طبقه ای یا عددی را به آن ضمیمه کنید ، یا در صورت تمایل هندسه های اصلی را پیوست کنید (که ممکن است کمی گران باشد ، اما مطمئناً مخصوصاً برای نقاط امکان پذیر است).
H3 محدودیتی روی آن ندارد. آنچه که مدیریت آن است این است که یک ستون مشخصه مکانی است و آنچه احتمالاً استفاده می کنید کلید اصلی آن جدول است. کاری که با بقیه جدول انجام می دهید به خود شما بستگی دارد. آنچه را که می خواهید با آن شناسه مرتبط شود انتخاب می کنید.
چگونه H3 با سرعت جستجوی شعاع متوسط ، یک نقطه در چند ضلعی یا چیزی که نزدیک من است مقایسه می شود؟
پاسخ این واقعاً استفاده از H3 به عنوان یک شاخص فضایی است. اگر شما فقط نگران محیط اطراف آن هستید ، یعنی اینکه سلول شما در کجاست ، این موضوع با هم مقایسه می شود.
فرض کنید شما از یک پایگاه داده استفاده می کنید که از کلیدها به مقادیر نقشه می کشد … آن از یک کلید شش ضلعی به یک مقدار ترسیم می شود. برای آن عملیات جستجو ، به طور کلی زمان تقریباً ثابت خواهد بود. اگر می خواستید یک جستجوی محله انجام دهید ، ممکن است مجبور شوید نقاط مختلفی را اسکن کرده و فاصله آنها را از جایی که اکنون هستید تا جایی که این نقاط هستند محاسبه کنید.
شاید شما می خواهید چیزهایی را پیدا کنید که در شعاع خاصی از شما قرار دارند. H3 به سوال شعاع علاقه زیادی دارد. این ، همانطور که قبلاً اشاره کردیم ، در مورد همسایگان مساوی است و از خصوصیات بسیار مهم شبکه H3 است که این حلقه ها را از مبدأ پیدا می کند. این حلقه ها ، دایره را به بهترین شکل ممکن تقریب می زنند.
می توانید تولید کنید ، بیایید بگوییم تمام سلول هایی که در فاصله دو شبکه از شما قرار دارند ، و سپس جستجوی آنها را انجام دهید. این مسئله پیچیدگی را کمی افزایش می دهد زیرا شما باید به دنبال سلولهای مختلفی باشید که در نزدیکی شما هستند. اما شما می توانید با استفاده از شاخص فضایی و ویژگی ، یافتن سلولهای مجاور و ویژگی شش ضلعی تضمین می کند که سلولهای اطراف یک دایره را تقریبی می کنند.
آیا می توان داده های تصویر را با داده های شطرنجی به شبکه تبدیل کرد؟
ممکن است. من فقط مثالی دیدم که کسی داده های ارتفاعی را در شبکه H3 قرار می دهد. همانطور که می توانید تصور کنید ، مانند وقتی که ما قبلاً در مورد چند ضلعی صحبت کردیم ، می توان از فرآیندهای مشابه برای طیف گسترده ای از داده ها استفاده کرد.
روش های مختلفی برای ورود یک رستر به شبکه H3 وجود دارد. یکی با نمونه گیری از شطرنجی است. ما یک شبکه H3 می گیریم ، و تعدادی از نقاطی را می خواهیم که از رستر نمونه بگیریم. سپس از آن برای انتقال داده های شطرنجی به شبکه استفاده می کنیم.
روش دیگر اینست که تمام پیکسلهای موجود در آن رستر را بگیرید و سلول H3 مرتبط را پیدا کنید و داده ها را به آن طریق منتقل کنید.
مزیت استفاده از H3 با تجزیه و تحلیل فضایی و تجسم چیست؟
چند مزیت وجود دارد که H3 به ما می دهد. داشتن یک سیستم تجزیه و تحلیل مکانی-مکانی که شبکه ای در کل سیستم دارد ، یک مزیت فوق العاده است. ما قبلاً در مورد مثالی در مورد چگونگی نیاز به فهرست بندی ، پردازش و تجسم داده ها صحبت کردیم. بسیاری از قدرت و مزایای داشتن داده در یک سیستم شبکه جهانی گسسته مانند این از یک تجربه یکپارچه ناشی می شود.
ما امیدواریم که بتوانیم تجربه ای را در Unfolded بسازیم ، جایی که داده ها در انتهای پشت ، در قسمت جلویی و در این بین ، همه در یک فرم مکانی ثابت قرار دارند. این به ما امکان می دهد با تمام ابزارهای مختلف Big Data و حتی ابزارهای کوچک داده روی داده ها کار کنیم.
اگر در آمریکا باشید ، یک سیستم شبکه دیگر و حتی یک رستر داشته باشید ، ممکن است برخی از داده های کد را داشته باشید. شما هنوز هم می خواهید بتوانید با این قالب های مختلف کار کنید. همانطور که دیدیم دریافت و ورود اطلاعات از H3 انعطاف پذیر است. یکی از موارد کلیدی که ما در Unfolded قادر به انجام آن هستیم زیرا این سیستم شبکه H3 را داریم ، متحد سازی فضایی داده ها به روشی است که برای سایر فناوری ها بسیار دشوار است. ما می توانیم داده ها را بین هندسه ها پیش بینی کنیم.
به عنوان یک مثال خوب ، در ایالات متحده ، ما داده های مشتری را در قالب کد پستی داریم ، و ما اطلاعات جمعیتی را در قالبی داریم که می توانیم از اداره سرشماری ایالات متحده دریافت کنیم. آنها از هندسه های مختلفی استفاده می کنند که شبکه H3 به هم می پیوندد. ما همچنین می توانیم آهنگ های شطرنجی ، GPS و همه این داده های مختلف را بیاوریم و آنها را در یک تجزیه و تحلیل ساده که کاربر انجام می دهد ، متحد کنیم. دسترسی به داده های فضایی را بسیار آسان می کند .
آیا همه چیز را به شش ضلعی تبدیل می کنید و سپس با آنها به عنوان لایه های مکانی مستقل رفتار می کنید؟
بله ، و توانایی تبدیل داده ها از شش ضلعی نیز به همان اندازه حیاتی است. با این کار می توانید بین نمونه ای از سرشماری جغرافیای ایالات متحده به کد پستی تبدیل شوید. ما قادر به استفاده از یک شبکه شش ضلعی هستیم که به طور چشمگیری از هندسه چند ضلعی به شکل دیگر تبدیل می شویم. کاربران می توانند تجزیه و تحلیل خود را در هندسه ای انجام دهند که راحت باشند و احساس مفید بودن کنند.
آیا وقتی H3 انتخاب درستی نیست ، می توانید به چند نمونه فکر کنید؟
همه سیستم های شبکه دارای برخی معاملات هستند. وقتی سیستم شبکه ای را از نظر فرافکنی که استفاده می کنیم ، شکل سلول و تقسیم سلول ، تصمیم می گیریم.
موضوعی که به ذهنم خطور می کند مسئله سلسله مراتب شش ضلعی است که قبلاً به آن پرداختیم. اگر یک مورد استفاده داریم که نیاز به مهار دقیق دارد ، شاید دارای داده های بسته یا داده های سیاسی باشد که نمی توانیم یک محدودیت تقریبی داشته باشیم ، اما هنوز هم باید این کوتاه سازی را انجام دهیم ، در این صورت ، شما ممکن است نخواهید از H3 استفاده کنید ، یا استفاده از آن پیچیده تر است.
H3 سعی می کند مساحت تقریباً مساوی داشته باشد ، اما سیستم مساحت یکسانی نیست. اگر از مواردی استفاده می کنید که به این نوع خاصیت احتیاج دارند ، ممکن است مواردی باشد که H3 مناسب شما نباشد.
علاوه بر Uber ، مورد مورد علاقه شما برای H3 چیست؟
این یک سوال دشوار است. روش های زیادی برای استفاده از آن وجود دارد که من دیده ام – مانند تجزیه و تحلیل آتش سوزی یا استفاده از برنامه ریزی شهری. این یک پروژه منبع باز است و ما لزوماً همیشه از نحوه استفاده افراد از آن بازخورد نمی گیریم. اگر مورد جالب استفاده دارید ، اگر از H3 در زمینه های مختلف استفاده می کنید ، دوست دارم بدانم برای چه کاری استفاده می کنید و نحوه استفاده از آن چیست. مفید است که بفهمیم مردم هنگام کار در مورد حفظ پروژه با آن کار می کنند.
موردی که بیشتر مورد توجه من قرار گرفت مربوط به فضای بازی و گیمیفیکیشن است. من در مورد این موضوع چند ایده شنیده ام. یکی از آنها یک ارائه دهنده داده است که برای برخی از کاربران خود جمع آوری داده را بازی می کند. فقط چیزی بی انتها در مورد توسعه بازی وجود دارد. هر چیزی که در بالای H3 بازی ایجاد کند ، نظر من را جلب می کند. به موفقیت های Pokémon Go و دیگر بازی های واقعیت افزوده فکر کنید. فقط یک مورد استفاده جالب است ، اگر نه چیز دیگری ، دیدن H3 به عنوان بخشی از یک سیستم بازی ظاهر می شود.
Geospatial در بازی ها و همچنین در اختیار افراد روزمره قرار دارد! این فقط خارق العاده است! بنابراین ، H3 را برای چه استفاده می کنید؟
بدون دیدگاه