سپتامبر 2009
هدف، واقعگرایانه
این آموزش شما را با اصول تبدیل داده های برداری GIS به KML با استفاده از کتابخانه منبع باز OGR راهنمایی می کند. در حالی که این کتابخانه ها را می توان با اکثر فایل های GIS استفاده کرد، این آموزش بر روی کار با فایل های شکل ESRI تمرکز دارد.
معرفی
داده های جغرافیایی به اشکال مختلف در وب موجود است. KML یکی از رایج ترین فرمت های فایل است، اما بسیاری از انواع فایل های دیگر نیز استفاده می شود. شرکت های بزرگ، دولت ها و سازمان های غیردولتی از سیستم های اطلاعات جغرافیایی برای ایجاد نقشه های خود به همراه فرمت های فایل های تخصصی استفاده می کنند. این برنامه ها اغلب به آموزش تخصصی یا حداقل زمان قابل توجهی برای یادگیری نیاز دارند. موارد اختصاصی می توانند بسیار گران باشند. از سوی دیگر، آنها بسیار قدرتمند هستند و مجموعه ای غنی از ابزارهای نقشه برداری را برای نقشه بردار حرفه ای فراهم می کنند.
بسیاری از نهادهای دولتی بخشی از داده های GIS خود را برای استفاده عمومی منتشر می کنند. پورتال هایی مانند Data.gov ، سیستم اطلاعات جغرافیایی ماساچوست و DataSF یافتن داده ها را برای جوامع خود آسان می کنند. این مقاله نحوه تبدیل داده های برداری - یعنی داده ها از هندسه های ساده مانند نقاط، خطوط و چند ضلعی ها - به KML را توضیح می دهد. این به شما امکان می دهد به انواع مختلف داده ها دسترسی داشته باشید، از جمله:
- داده های بسته که مرزهای قطعات ساختمانی را نشان می دهد
- دادههای رویداد، مانند گزارشهای جنایی
- داده های مرزی، برای مرزهای شهرداری ها، ایالت ها، شهرستان ها، استان ها و غیره.
- داده های جاده، از جمله جاده های برنامه ریزی شده و جاده های موجود
- مجوزهای ساخت و ساز، با اشاره به محل صدور مجوز
- دادههای بهداشتی، مانند توصیف مکانهایی که موارد شیوع آنفولانزا وجود دارد
بسیاری از برنامه های کاربردی عالی برای انجام تبدیل داده ها وجود دارد، مانند Google Earth Pro ، shp2kml ، KML2KML ، Arc2Earth ، و بسیاری دیگر. این مقاله بر تبدیل دادههای برداری به KML برای استفاده در Google Earth یا Google Maps، با استفاده از ابزارهای منبع باز Geospatial Data Abstraction Library (GDAL) از خط فرمان تمرکز میکند و شاید شما را ترغیب کند که این کتابخانهها را در برنامههای کاربردی خود بگنجانید.
یادداشتی در مورد انواع فایل
در حالی که این مقاله شما را از مراحل تبدیل شکل فایلهای ESRI به KML میگذراند، ابزارهای GDAL، به ویژه OGR ، میتوانند برای تبدیل انواع فایلهای مختلف، از جمله پایگاههای داده CSV ، PostGRES/PostGIS و انواع فرمتهای دیگر استفاده شوند . . اکثر فرمت های داده اصلی که با آنها روبرو می شوید پشتیبانی می شوند. اگر فرمتی پیدا کردید که پشتیبانی نمیشود، میتوانید یک درایور برای OGR بنویسید، زیرا یک کتابخانه منبع باز است.
فایل های شکل
فرمت شکل فایل محبوب ESRI یکی از رایج ترین فرمت های داده GIS است. در حالی که از نظر فنی shapefile یک فایل با پسوند .shp است، یک .shp به خودی خود باز نمی شود. حداقل به یک فایل dbf. و .shx نیاز دارد، و فایلهای متنوع دیگری نیز برای اهداف مختلف مورد نیاز است. بنابراین هنگامی که شما یک ارجاع به یک شکل فایل را مشاهده می کنید، تقریباً همیشه به معنای مجموعه ای از فایل ها است، معمولاً در یک آرشیو فشرده به نوعی برای نگه داشتن آن در کنار هم، و این گونه است که ما از عبارت shapefile برای بقیه این مقاله استفاده خواهیم کرد.
Shapefiles حاوی مقدار زیادی اطلاعات در مورد جغرافیایی است که آنها توصیف می کنند. آنها هندسه های واقعی، ابرداده ها در مورد هندسه ها، و اطلاعات مربوط به سیستم مرجع فضایی مورد استفاده، و همچنین بسیاری از جنبه های دیگر داده ها را توصیف می کنند. برای اهداف این مقاله، بیشتر به هندسه ها، ابرداده ها و سیستم مرجع فضایی اهمیت می دهیم.
هندسه و ابرداده مفاهیم آسانی هستند. هندسه ها نقاط، خطوط و چند ضلعی هستند و می توانند به راحتی در KML بیان شوند. فراداده، دادهای درباره دادهها است که اغلب برای اهداف فیلتر کردن یا پرس و جو استفاده میشود. برای مثال، خطی که یک جاده را توصیف میکند ممکن است دارای ابردادههایی در مورد نوع جاده (خیابان شهری، بزرگراه ملی، دوربرگردان و غیره)، محدودیتهای سرعت، هزینههای مالی، اندازه آن و غیره باشد.
سیستم های مرجع مکانی (SRS) برای شناسایی سیستم های مختصات و پیش بینی های مورد استفاده برای ایجاد داده های برداری استفاده می شود. در KML از طول و عرض جغرافیایی در سیستم مختصات WGS84 استفاده می شود. اما راه های دیگری برای شناسایی مختصات روی نقشه وجود دارد. محبوبترین آنها عبارتند از: Universal Transverse Mercator ، شبکه ملی بریتانیا ، و سیستمهای State Plane . برای تبدیل داده ها به KML، ممکن است لازم باشد آن اطلاعات را شناسایی کنید. KML فقط از WGS84 پشتیبانی می کند. به طور معمول، shapefiles آن اطلاعات را همراه با خود حمل می کند، اغلب در یک فایل prj.، و OGR می تواند آن را از آنجا شناسایی کند. با این حال، گاهی اوقات لازم است SRS شناسایی شود. گاهی اوقات این به شکلی توسط منبع داده ارائه میشود، یا در صفحهای که آن را از آن دانلود میکنید، یا در یک سند readme با بارگیری، یا فرمت دیگری. معمولا این کافی است. سایت مرجع فضایی حاوی اطلاعات بیشتری در مورد SRS است و مرجعی دارد که به شما امکان می دهد سیستم های مرجع فردی را جستجو کنید.
ogr2ogr
GDAL مجموعه ای قدرتمند از کتابخانه ها را برای کار با داده های برداری فراهم می کند. به طور خاص، ogr2ogr
یک ابزار قدرتمند برای تبدیل داده است. بسیاری از برنامه ها، از جمله برخی از موارد ذکر شده در بالا، GDAL/OGR را در خود جای داده اند.
برای شروع، GDAL را دانلود و نصب کنید . سپس به یک شکل فایل نیاز خواهید داشت. برای اهداف این آموزش، سعی کنید از یکی از DataSF استفاده کنید. مثال زیر از شکل realtor_neighborhoods
استفاده می کند که پس از موافقت با مجوز آنها، می توانید آن را در اینجا دریافت کنید. هنگامی که فایل را دانلود کردید، آن را در پوشه ای که به خاطر می آورید از حالت فشرده خارج کنید. یک خط فرمان باز کنید و به دایرکتوری که دادهها را در آن قرار دادهاید بروید. حالا برای بخش سرگرمکننده.
ogr2ogr
را می توان به راحتی از خط فرمان استفاده کرد. در اینجا نحوه تبدیل realtor_neighborhoods
از یک shapefile به KML آمده است:
ogr2ogr -f "KML" -where "NBRHOOD='Telegraph Hill'" realtor_neighborhoods.kml realtor_neighborhoods.shp
در اینجا خلاصه ای از آنچه این دستور انجام می دهد آورده شده است:
-
ogr2ogr
: این دستور اصلی است. -
-f "KML
: این فرمت خروجی را روی KML تنظیم می کند. -
-where "NBRHOOD='Telegraph Hill'"
: این یک عبارت Where اختیاریwhere
، مانند SQL. اساساً به شما این امکان را می دهد که داده ها را بر اساس ابرداده جستجو کنید. با shapefiles و انواع فایل های دیگر که از querying پشتیبانی می کنند کار می کند. در این مورد، برای فیلد NBRHOOD پرس و جو می کند و فقط ویژگی هایی را انتخاب می کند که NBRHOOD تلگراف هیل دارند. اگر آن پارامتر را خاموش کنید،ogr2ogr
هر چند ضلعی محله را به شما می دهد. -
realtor_neighborhoods.kml
: این نام فایل خروجی است. نام فایل خروجی اول است. -
realtor_neighborhoods.shp
: این نام فایل ورودی است. فایل .shp کل شکل فایل را نشان می دهد.
همین، خیلی ساده است. این دستور یک فایل KML می نویسد که به شکل زیر است:
<?xml version="1.0" encoding="utf-8" ?> <kml xmlns="http://www.opengis.net/kml/2.2"> <Document><Folder><name>realtor_neighborhoods</name> <Schema name="realtor_neighborhoods" id="realtor_neighborhoods"> <SimpleField name="Name" type="string"></SimpleField> <SimpleField name="Description" type="string"></SimpleField> <SimpleField name="OBJECTID" type="float"></SimpleField> <SimpleField name="NBRHOOD" type="string"></SimpleField> <SimpleField name="SFAR_DISTR" type="string"></SimpleField> </Schema> <Placemark> <ExtendedData><SchemaData schemaUrl="#realtor_neighborhoods"> <SimpleData name="OBJECTID">81</SimpleData> <SimpleData name="NBRHOOD">Telegraph Hill</SimpleData> <SimpleData name="SFAR_DISTR">District 8 - Northeast</SimpleData> </SchemaData></ExtendedData> <Polygon><outerBoundaryIs><LinearRing><coordinates>-122.41041847319012,37.805924016582715,0 -122.407203813674,37.806324902060979,0 -122.40667792852096,37.803710121958744,0 -122.40348255423899,37.804117462290641,0 -122.40237202127015,37.798540648764529,0 -122.40876046662795,37.797723222540775,0 -122.41041847319012,37.805924016582715,0</coordinates></LinearRing></outerBoundaryIs></Polygon> <Style><LineStyle><color>ff0000ff</color></LineStyle> <PolyStyle><fill>0</fill></PolyStyle></Style> </Placemark> </Folder></Document></kml>
می توانید ببینید که ابرداده از shapefile در عناصر Schema
و SimpleData
حفظ شده است. برای اطلاعات بیشتر در مورد استفاده از ExtendedData و حفظ دادههای سفارشی، بخش راهنمای توسعهدهنده KML در مورد افزودن دادههای سفارشی را بررسی کنید.
بعدش چی؟
GDAL/OGR به شما قدرت فوق العاده ای می دهد. در سادهترین پیادهسازی، اکنون میتوانید تمام دادههای خود را برای استفاده در Google Earth، Maps یا هر مرورگر جغرافیایی پشتیبانیکننده KML به KML تبدیل کنید. حتی بهتر از آن، میتوانید کتابخانههای GDAL/OGR را در برنامههای خود بگنجانید و به شما این امکان را میدهد که تبدیل دادههای GIS به KML را خودکار کنید و خروجی آن تبدیل را کنترل کنید. سعی کنید آن را با libkml ترکیب کنید تا کنترل بیشتری بر روی نسل KML خود داشته باشید.