PlaceKey, şu anda QGIS ile entegre edilmiş ücretsiz bir adres ve ilgi noktası (POI) eşleştirme aracıdır. PlaceKey Konnektör Eklentisi. PlaceKey, veri kümenizdeki her yer için benzersiz bir PlaceKey oluşturmak amacıyla adres ve POI normalleştirme, doğrulama ve coğrafi kodlama sahne arkası çalışmaları yapar.
Bazı POI’lerle ilgili verileriniz olduğunu varsayalım:
Ve bu özellikleri başka bir kaynaktan aynı varlıklar için bilgi ile katılmak istersiniz. En belirgin yaklaşımlar:
Her iki yaklaşımın da olumsuz yönleri var. İlk yöntem, yazım hataları, aynı POI’ye atıfta bulunan farklı takma adlar veya sadece ortak bir tanımlayıcının olmaması nedeniyle acı çekebilir. Varlıklar beklenenden daha yakın olabileceğinden ikinci yöntem oldukça zor olabilir. Bu ya yanıltıcı birleşimler ya da daha da kötüsü, bire bir ilişki yaratacaktır. Yani burada belirsizlikle uğraşıyoruz.
Bir örnek: City, Lat ve Lon’un aşağıdaki iki katman arasında nerede farklılık gösterdiği not:
Bu örnekte, ilk yöntem (ortak bir özniteliğe katılmak) Missouri’deki Costco’yu eşleştirirdi, çünkü şehirler sırasıyla ‘Saint Louis’ ve ‘Concord’ olarak listelenmiştir.
Tampon doğru boyutta ayarlanmışsa ikinci yöntem (uzamsal birleştirme) çalışmış olabilir, ancak bu veri kümesi birbirine daha yakın olan POI’ler içeriyorsa başarısız olabilir. Örneğin, büyük Costco’nun bitişiğindeki küçük bir Starbucks, mekansal bir birleştirme ile eşleşmemiş olabilir. Mekansal birleşimlerin nerede başarısız olabileceğinin bir başka örneği, alışveriş merkezleri içindeki mağazalar ve apartmanlardaki bireysel birimler gibi diğer geometrilerde bulunan POI’lerdir.
PlaceKey’in Hedefi fiziksel yerleri tanımlamak için bir standart oluşturmaktır. Her POI’ye bir “nerede” parçasıyla konumu gösteren benzersiz bir tanımlayıcı atayarak çalışır ( H3 Altıgen), adresin ve POI’nin kodlamalarını içeren bir “ne” parça ile yerin kendisini gösterir.
Uygulamada, bu aşağıdaki varyasyonların meydana gelebileceği anlamına gelir:
Ana avantajlar:
Ancak maalesef bu sistem şu anda sadece ABD’de tam olarak desteklenmektedir.
Yine de bu API’nın avantajları, Whatswords ve Google Place ID gibi kapalı sistemlere kıyasla oldukça benzersizdir:
Nazaran Artı Kodlar PlaceKey sadece mekansal bilgileri değil, aynı zamanda hangi kısmı da gösterecektir.
Ben yazdım PlaceKey konektörü Farklı veri kümelerine katılmak için PlaceKey kullanımını kolaylaştırmak için eklenti. Eklenti bir işleme aracıdır. Bu nedenle, QGIS içindeki farklı iş akışlarıyla birleştirebiliriz. İşleme aracı ile birlikte, aşağıda gösterildiği gibi, tek PlaceKeys’i doğrudan haritada sorgulama seçeneği sunan bir arama dockwidget oluşturdum:
Kısacası: Bir katman/tablo/dosyanın özelliklerini alır ve istenen alanları toplu API uç noktasına yük olarak gönderir. Eklenti bunu maks. İstek başına 100 özellik. Ek olarak, eklenti size orijinal özelliği kopyala ve PlaceKey’i ekleme veya sadece özellik kimliğini ve ortaya çıkan PlaceKey’i döndürme seçeneği sunar.
Yapıldıktan sonra, yeni katman katman listenizin bir parçasıdır. Daha sonra diğer veri sağlayıcılarıyla gelecekteki birleşim için saklayabilir ve/veya kullanabilirsiniz:
Eklentiyi kullanmak istiyorsanız, kendinize PlaceKey.io’da bir API anahtarı alın ve QGIS kurulumunuza kaydedin. İşiniz bittikten sonra, verilerinizin ilave placeKeys ile tadını çıkarın. Lütfen sorun izleyiciyle ilgili tüm sorunları bildirmeye çalışın. PlaceKey’i diğer “müşteriler” de kullanmak istiyorsanız R– Python– Kar tanesi– Google e -tablo…
Hala bunu okuyorsanız ve kendinize soruyorsanız… sihir nerede?! Bu minimal örneği sizinle paylaşayım:
Kullanabilirsiniz PlaceKey API Oldukça kolay: bir yer adı ve konum hakkında bir fikir verin ve bu POI için bir placeKey alacaksınız. Konum bilgileri aşağıdakilerden biri olabilir:
PlaceKey.io API’sının kullanımı basittir. Örneği indirebilirsiniz veri kümesi burada:
import csv reader = csv.DictReader(open("/Users/riccardoklinger/Desktop/costco_small.csv", 'r')) dict_list = [] for line in reader: dict_list.append(line)
CSV’mizden dikt aldıktan sonra yükü hazırlayabiliriz:
payload = {"queries": []} for item in dict_list: payload["queries"].append({"street_address": item["street"], "region": item["state"], "city":item["city"], "iso_country_code": "US", "location_name":item["shop"]})
Birden fazla özelliğimiz olduğu için kullanacağız toplu API API’ya bir istekle tüm verileri göndermek için uç nokta. Alınan sonuçlar aşağıdaki gibidir:
import requests url = "https://api.placekey.io/v1/placekeys" payload = json.dumps(payload) headers = { 'apikey': apikey, #place your apikey here 'Content-Type': 'application/json' } response = requests.request("POST", url, headers=headers, data = payload) print(response.text.encode('utf8'))
1.5’lerden sonra sonucu görebiliriz:
Bu prototip komut dosyasını kendiniz denemek istiyorsanız, indirebilirsiniz Burada.