KML shapefile'a nasıl dönüştürülür: QGIS, ogr2ogr veya çevrim içi
KML'yi shapefile'a dönüştürmek için KML'yi QGIS'te açın, katmana sağ tıklayın, “Export” > “Save Features As” yolunu seçin ve ESRI Shapefile formatını belirleyin. Komut satırında her çıktı için tek geometri tipiyle ogr2ogr -f "ESRI Shapefile" çalıştırın. Ya da .kml dosyasını FileReshape'in KML'den Shapefile'a dönüştürücüsüne bırakın; dosya sunucuya gönderilmeden tarayıcınızda işlenir, noktalar, çizgiler ve poligonlar ayrılır, .prj ve .cpg dosyaları eklenir.
KML shapefile'a dönüşürken neler değişir?
Google Earth ve Google My Maps'in formatı olan KML ile shapefile, coğrafi verileri birbirinden çok farklı biçimlerde saklar ve hangi dönüştürme yöntemini seçerseniz seçin aynı farklarla uğraşmanız gerekir. Bunları önceden bilmek, sonuçta sürprizlerle karşılaşmanızı önler.
Dosya başına tek geometri tipi. Bir KML dosyası aynı klasörde noktaları, çizgileri ve poligonları bir arada tutabilir. Shapefile ise yalnızca tek bir geometri tipi tutabilir; bu nedenle karışık bir KML, her tip için bir tane olmak üzere birkaç shapefile'a dönüşmek zorundadır.
Kısa alan adları. .dbf öznitelik tablosu en fazla 10 karakterlik alan adlarına izin verir; bu yüzden Description, Descriptio olur. Uzun HTML açıklamaları gibi 254 karakterden uzun metin değerleri kesilir.
Stil yok. Renkler, çizgi kalınlıkları ve simgeler KML'nin bir parçasıdır ama shapefile'ın değildir; bu yüzden kaybolurlar. Görünüm önemliyse sembolojiyi CBS programınızda yeniden oluşturmanız gerekir.
Koordinat sistemi. KML her zaman WGS84 boylam ve enlemindedir. Shapefile, bunu belirten bir .prj dosyasıyla WGS84'te kalabilir ya da mesafe ve alanlara metre cinsinden ihtiyacınız varsa bir UTM dilimi veya TUREF / TM30 (EPSG:5254) gibi bir sisteme yeniden projeksiyonlanabilir. Shapefile'ın .shp, .shx ve .dbf parçalarının da bir arada tutulması gerekir; .cpg dosyası ise programlara metin kodlamasını bildirir.
QGIS'te KML'yi shapefile'a dönüştürme
QGIS ücretsiz ve açık kaynaklıdır ve KML'yi GDAL aracılığıyla okur. Verileri kontrol etmek, düzenlemek, sembolojisini değiştirmek veya yeniden projeksiyonlamak da istiyorsanız en iyi seçimdir. Bir KML'de birden fazla klasör ya da karışık geometri tipleri varsa QGIS bunları ayrı katmanlar olarak listeleyen bir pencere gösterebilir; ihtiyacınız olanları ekleyin ve her birini ayrı ayrı dışa aktarın.
“Save Vector Layer as…” penceresinde çıktının koordinat sistemini ve kodlamasını da ayarlayabilirsiniz. ç, ğ, ı, ş veya é, ø, ü gibi harfler içeren adların bozulmadan kalması için UTF-8 seçin. KML'de noktalar, çizgiler ve poligonlar varsa dışa aktarmayı her katman için tekrarlayın.
- QGIS'i açın ve .kml dosyasını haritaya sürükleyin ya da “Layer” > “Add Layer” > “Add Vector Layer” yolunu kullanın.
- “Layers” panelinde katmana sağ tıklayın ve “Export” > “Save Features As” seçeneğini seçin.
- “Format” alanını ESRI Shapefile olarak ayarlayın, bir dosya adı girin ve gerekirse farklı bir koordinat referans sistemi (CRS) seçin.
- “OK” düğmesine tıklayın ve yeni shapefile katmanını ve öznitelik tablosunu kontrol edin.
ogr2ogr ile KML'yi shapefile'a dönüştürme
ogr2ogr, GDAL'ın komut satırı dönüştürücüsüdür. Büyük dosyalar, çok sayıda KML üzerinde toplu işler ve betikler için kullanın. KML'de hangi katmanların olduğunu görmek için ogrinfo ile başlayın; GDAL'ın KML sürücüleri her KML klasörünü genellikle ayrı bir katman olarak okur.
Shapefile yalnızca tek bir geometri tipi tuttuğundan her tipi kendi shapefile'ına yazın. OGR SQL'in özel alanı OGR_GEOMETRY, -where veya -sql ile tipe göre filtreleme yapmanızı sağlar. -nlt seçeneği çıktı katmanının geometri tipini belirler; bir katmanda tek parçalı ve çok parçalı çizgiler ya da poligonlar karışıksa -nlt PROMOTE_TO_MULTI işe yarar. Filtrelemeyi atlarsanız shapefile ilk objenin tipini alır ve başka tipteki objeler hataya yol açar.
ExtendedData alanlarının sütunlara dönüşüp dönüşmeyeceği, GDAL kurulumunuzdaki KML sürücüsüne bağlıdır. LIBKML sürücüsü bu alanları okur; hangi sürücülere sahip olduğunuzu ogrinfo --formats ile kontrol edin. Bir web sunucusundaki KML'yi gösteren ağ bağlantılarını (network link) önce indirip yerel bir KML olarak kaydetmek en iyisidir.
# Katmanları (klasörleri) ve geometri tiplerini listeleme
ogrinfo -so -al places.kml
# Her geometri tipi için bir shapefile
ogr2ogr -f "ESRI Shapefile" places_points.shp places.kml -where "OGR_GEOMETRY='POINT' OR OGR_GEOMETRY='MULTIPOINT'" -explodecollections -nlt POINT -lco ENCODING=UTF-8
ogr2ogr -f "ESRI Shapefile" places_lines.shp places.kml -where "OGR_GEOMETRY='LINESTRING' OR OGR_GEOMETRY='MULTILINESTRING'" -nlt PROMOTE_TO_MULTI -lco ENCODING=UTF-8
ogr2ogr -f "ESRI Shapefile" places_polygons.shp places.kml -where "OGR_GEOMETRY='POLYGON' OR OGR_GEOMETRY='MULTIPOLYGON'" -nlt PROMOTE_TO_MULTI -lco ENCODING=UTF-8
# İsteğe bağlı: WGS84'te bırakmak yerine UTM 36N dilimine projeksiyonlama
ogr2ogr -f "ESRI Shapefile" -t_srs EPSG:32636 places_utm.shp places_points.shpFileReshape ile KML'yi çevrim içi shapefile'a dönüştürme
FileReshape'in KML'den Shapefile'a dönüştürücüsü aynı işi tarayıcınızda, hiçbir yazılım kurmadan yapar. Web için derlenmiş GDAL kullanır; KML kendi diskinizden okunur ve sunucuya gönderilmez, bu yüzden müşteri verileri için de güvenlidir. Sonuç, her shapefile için .shp, .shx, .dbf, .prj ve .cpg dosyalarını içeren bir .zip dosyasıdır.
Dönüştürücü olağan sorunları sizin yerinize halleder. Noktalar, çizgiler ve poligonlar ayrı shapefile'lara yazılır (örneğin Sights_points.shp ve Routes_lines.shp) ve her KML klasörü, klasörün adını taşıyan ayrı bir shapefile olur. Alan adları 10 karaktere kısaltılır. Varsayılan olarak çıktı bir .prj dosyasıyla WGS84'te kalır; isterseniz bir UTM dilimi gibi başka bir sistem seçebilirsiniz. Yükseklikler 3B shapefile olarak korunur. Öznitelik tablosu, eşleşen bir .cpg dosyasıyla UTF-8 olarak yazılır.
Sınırlarını bilin. Renkler ve simgeler aktarılmaz. Yer işaretinin adı ve açıklaması korunur, ancak KML ExtendedData olarak saklanan ek alanlar GDAL'ın tarayıcı sürümü tarafından okunmaz. Web'deki verileri gösteren ağ bağlantıları izlenmez; dönüştürücü kaç tanesini atladığını bildirir. KMZ dosyası için önce KMZ'den KML'ye aracıyla KML'yi çıkarın. Boyut sınırı tarayıcınızın belleğidir; yaklaşık 200 MB'a kadar olan dosyalar normalde sorunsuz çalışır.
- KML'den Shapefile'a dönüştürücüyü açın ve .kml dosyanızı bırakın ya da seçmek için tıklayın.
- İsterseniz “Çıktı koordinat sistemi” alanına başka bir sistemin EPSG kodunu girin, örneğin bir UTM dilimi.
- “Shapefile biçimine dönüştür” düğmesine tıklayın ve shapefile'ları içeren .zip dosyasını indirin; ardından arşivi açıp .shp dosyalarını CBS programınıza ekleyin.
Hangi yöntemi seçmelisiniz?
Yalnızca başkasına iletmek veya başka bir programda açmak için shapefile'a ihtiyaç duyduğunuz tek seferlik bir dosya için tarayıcıdaki dönüştürücüyü kullanın. Sonucu haritada kontrol etmek, öznitelikleri düzenlemek, sembolojiyi yeniden kurmak veya ExtendedData alanlarını korumak istiyorsanız QGIS'i kullanın. Çok büyük dosyalar, aynı anda çok sayıda dosyanın dönüştürülmesi veya otomatik iş akışları için ogr2ogr'u kullanın. Alıcı GeoPackage kabul ediyorsa onu tercih etmeyi düşünün: alan adlarında 10 karakter sınırı yoktur ve tek bir dosyada birden fazla katman tutabilir.
Sıkça sorulan sorular
Neden tek bir KML'den birkaç shapefile çıkıyor?
Bir shapefile yalnızca tek bir geometri tipi saklayabilir. KML'niz noktaları, çizgileri ve poligonları bir arada içeriyorsa ya da birden fazla klasörü varsa, hiçbir veri kaybolmasın diye her tip veya klasör ayrı bir shapefile olur.
Google Earth'teki renkler ve simgeler korunur mu?
Hayır. Shapefile'da stillere yer yoktur; bu yüzden renkler, çizgi kalınlıkları ve simgeler her yöntemde kaybolur. Katmanın sembolojisini QGIS'te veya CBS programınızda yeniden ayarlayın.
KMZ dosyasını shapefile'a dönüştürebilir miyim?
Evet. KMZ, sıkıştırılmış bir KML'dir. QGIS ve ogr2ogr onu genellikle doğrudan okuyabilir. FileReshape'te önce KMZ'den KML'ye aracını kullanın, ardından KML'yi shapefile'a dönüştürün.
FileReshape ile çevrim içi dönüştürürken KML'im sunucuya yüklenir mi?
Hayır. Dönüştürme tarayıcınızda çalışır ve dosya bilgisayarınızda kalır.
Description alanı neden Descriptio adını alıyor?
.dbf formatı shapefile alan adlarını 10 karakterle sınırlar; bu yüzden daha uzun adlar kesilir. Dönüştürmeden önce alanları yeniden adlandırın ya da uzun adlar önemliyse GeoPackage kullanın.