ArcGIS API for JavaScript ile Web Uygulamaları – 5 Arama Aracı

Bu yazımızda ‘ArcGIS World Geocoding Service’ servisini kullanarak adres arama ve konumdan adres bulma işlemini öğreneceğiz.

‘Search’ (arama) aracı kullanarak uygulamalarınızda dünya üzerinde adres ve yer araması yapabilirsiniz. Bu araç ‘ArcGIS World Geocoding Service’ servisini varsayılan olarak kullanarak arama (coğrafi kodlama -geocoing) gerçekleştirmektedir. Arama işlemi esnasında her karakter girişinde servis size önerileri içeren bir liste sunacaktır, böylelikle en uygun eşleşen seçilebilir. Bununla birlikte servis, girdi olarak verilecek enlem ve boylam bilgisinden ters coğrafi kodlama (reverse geocoding) yaparak adres bilgisi sunar.

Adımlar

  1. ‘ArcGIS API for JavaScript ile Web Uygulamaları – 1’ blog yazımızda kullandığımız HTML sayfasını kullanacağız.
  2. ‘require’ Dojo elementi kısmına kullanacağımız ‘Search’ aracın tanımını yapacağız.

require([
"esri/Map",
"esri/views/MapView",
"esri/widgets/Search"
], function (Map, MapView, Search) {

  1. Uyglamanın ‘main’ fonksiyonunda bir ‘Search’ aracı oluşturup, kullanılacak ‘view’ tanımlaması yapıyoruz. Sonrasında görünüm içerisine aracamızı nasıl konumlandıracağımızı belirtiyoruz.

// Search aracı
var search = new Search({
view: view,
});

view.ui.add(search, "top-right");

  1. Harita üzerine basıldığında ters coğrafi kodlama yapılması için bir olay oluşturuyoruz. Bu olay sayesinde basılan konumun enlem ve boylam bilgisini ‘evt.mapPoint’ kullanarak elde ediyoruz.

  view.on("click", function (evt) {
search.clear();
view.popup.clear();
if (search.activeSource) {
var geocoder = search.activeSource.locator; // World geocode service
var params = {
location: evt.mapPoint
};
geocoder.locationToAddress(params).then(
function (response) {
// Bulunan adres bilgisini göster
var address = response.address;
showPopup(address, evt.mapPoint);
},
function (err) {
// Konumdan adres bulunamadığında
showPopup("Adres bulunamadı.", evt.mapPoint);
}
);
}
});

Arama aracının kullandığı servis kullanılarak (geocoder), ‘locationToAdress’ fonksiyonuna haritada tıklanan konum parametre olarak belirtildiğinde bir sonuç dönmesini sağlayacağız. Eğer bir cevap gelmiş ise açılır pencere içerisinde gelen bilgi görüntülenecek, hata oluştuysa ‘Adres bulunamadı’ olarak bilgi verilecektir.

HTML sayfamızdaki kodun son hali aşağıdaki gibi olmalı:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
<title>ArcGIS JavaScript API Örnekleri: Harita Uygulaması</title>
<style>
html, body, #haritaBlogu {
padding: 0;
margin: 0;
height: 100%;
width: 100%;
}
</style>

<link rel="stylesheet" href="https://js.arcgis.com/4.12/esri/themes/light/main.css">
<script src="https://js.arcgis.com/4.12/"></script>
<script>
require([
"esri/Map",
"esri/views/MapView",
"esri/widgets/Search"
], function (Map, MapView, Search) {
var map = new Map({
basemap: "topo-vector"
}); var view = new MapView({
container: "haritaBlogu",
map: map,
center: [32.8442835, 39.9323346], // boylam, enlem
zoom: 11
});

// Search aracı
var search = new Search({
view: view,
label: "Adres veya yer"
});

view.ui.add(search, "top-right");

view.on("click", function (evt) {
search.clear();
view.popup.clear();
if (search.activeSource) {
var geocoder = search.activeSource.locator; // World geocode service
var params = {
location: evt.mapPoint
};
geocoder.locationToAddress(params).then(
function (response) {
// Bulunan adres bilgisini göster
var address = response.address;
showPopup(address, evt.mapPoint);
},
function (err) {
// Konumdan adres bulunamadığında
showPopup("Adres bulunamadı.", evt.mapPoint);
}
);
}
});

function showPopup(address, pt) {
view.popup.open({
title:
+Math.round(pt.longitude * 100000) / 100000 +
"," +
Math.round(pt.latitude * 100000) / 100000,
content: address,
location: pt
});
}
});
</script>
</head>
<body>
<div id="haritaBlogu"></div>
</body>
</html>

ArcGIS JavaScript API ile yazılmış diğer örnekleri incelemek için linke tıklayınız.

Özel çözümler ve profesyonel destek için Esri Türkiye Profesyonel Hizmet birimi ile iletişim kurabilirsiniz.

Coğrafi Kodlamanın Kolaylığını “Geocoding” İle Keşfedin!

İnsanların kendi arazilerinin sınırlarını belirleme ihtiyacıyla başlayan ilk harita oluşturma süreci günümüzde de çeşitli konuların mekânsal olarak belirtilmesi için kullanılmaktadır. Coğrafi Bilgi Sistemleri’nde harita üzerinde mekânsal olarak konumun belirlenmesi coğrafi kodlama (Geocoding) ile yapılır.

Geocoding Nedir?

Geocoding, bir yerin koordinatları, adresi veya o yerin ismi gibi herhangi bir açıklamasını bir konuma dönüştüren işlemdir. Bu işlem sonucunda ortaya çıkan konumlar haritalama veya mekânsal analizler için kullanılabilecek özelliklere sahip olacak şekilde ortaya çıkar.

Geocoding işlemini kısaca harita üzerinde adres tanımlama olarak da ifade edebiliriz. Bu tanımlama işlemi tek bir adresi etkileşimli olarak girmenizi ve haritadaki yerini bulmanızı sağladığı gibi milyonlarca adres içeren bir veri tabanı tablosuna erişmenizi ve bulunan her adres için bir nokta özellikleri oluşturmanızı da sağlar.

Basit veri analizlerinden iş ve müşteri yönetimine kadar geocoding işleminin kullanılabileceği çok çeşitli uygulamalar vardır. Coğrafi kodlanmış adreslerde, adres konumlarını mekânsal olarak görüntüleyebilir ve bilgi içindeki kalıpları tanıyabilirsiniz. Bu, sadece bilgilere bakmak veya ArcGIS ile mevcut olan analiz araçlarını kullanarak yapılabilir. Ayrıca, adres bilgilerinizi belirli parametrelere göre görüntüleyebilir, böylece bilgileri daha fazla analiz edebilirsiniz.

Geocoding, basit bir iş akışına sahiptir. Bu iş akışı temel olarak dört işlemden oluşur;

  1. Referans verilerinizi alın ya da oluşturun: Adres bilgilerini içeren özellik sınıflarından oluşturulmuş nokta, çizgi veya alan geometrisine sahip referans verilerinizi veri tabanınızdan alın ya da oluşturun.
  2. Adres bulucu stilinizi seçin: Oluşturduğunuz referans verilerinin ev numarası, sokak adı veya posta kodu gibi bir adres belirleyici stili tarafından istenen adres öğelerine denk gelen alanları içerdiğine at edin.
  3. Adres bulucunuzu oluşturun: Adres bulucuyu seçili adres bulucu stili ile oluşturup referans verileriyle adres bilgilerini içeren özellik sınıflarını yükleyin.
  4. Adres eşleştirmenizi yapın: Verilerinizi oluşturduğunuz adres bulucu ile eşleştirin. İlk eşleştirmeniz sırasında tüm adreslerinizi eşleştiremediğiniz takdirde eşleşmeyen adreslerinizi yeniden düzenleyip, eşleştirin.

Adres tanımlama işlemini yaparken elimizdeki verinin doğruluk ve hassasiyet derecesi parametrelerinize bağlı olarak farklı şekillerde sonuç elde etmenizi sağlar. Örneğin; belirli bir bölgede kahve satışı yapan bir kafenin müşteri listesi elimizde olsun. Bu listede müşterilerin adları, adresleri, satın alma alışkanlıkları gibi bilgiler olsun. Bu bilgilerin doğruluk ve hassasiyet seviyelerine göre geocoding işlemi sonucunda çıkan konumları şekildeki gibi (Şekil 1) değişebilir. Sizin belirlediğiniz bu parametrelere göre değişen sonuçlarınız da pazarlama stratejilerinizi, belirli müşteri grubu hedef analizleriniz ve bu hedeflere yönlendirmeniz gibi birçok çözüm yöntemi olarak kullanılabilir.

Şekil 1: Doğruluk ve Hassasiyet Arasındaki İlişkiye Göre Geocoding İşlemi

(Kaynak: https://www.esri.com/arcgis-blog/products/arcgis-enterprise/analytics/geocoding-delivering-high-location-accuracy/ (Erişim Tarihi: 29/05/2018))

Geocoding İşleminin Kullanıldığı Projelerden Örnekler

Geocoding işlemini analizlerinizde sonuca giderken yardımcı araç olarak da kullanabilirsiniz. Bunun için aşağıda dünyadaki tüm Esri kullanıcılarının sorunlarının çözümleri için uyguladığı örnekleri inceleyebilirsiniz;

  • Amerika Birleşik Devletleri’nde Brevard County, Florida’da yapılan trafik kazalarının nerede ve ne zaman meydana geldiğini belirleyerek kazaların önlenebilmesi amacıyla bir çalışma yapılmıştır. Bu çalışma sırasında Lixin Florida Üniversitesi GeoPlan Merkezi’nden 2010-2015 yılları arasındaki her motorlu taşıt trafik kazası için yer, tarih ve saati içeren veriler alınarak bunun geocoding işlemi ile harita üzerine işlenmesi yapılır. (Daha detaylı bilgi için; http://desktop.arcgis.com/en/analytics/case-studies/analyzing-crashes-1-overview.htm)

Sonuç

Geocoding, tanım olarak harita üzerinde adres tanımlama olarak özetlense de yukarıdaki örneklerden de görebileceğiniz gibi kamu güvenliğinden yangın departmanına, polis departmanından planlama birimlerine kadar pek çok alanda gitmek istenilen çözüme göre ana veya ara işlem olarak uygulanabilir. Bunun için, coğrafi kodlamanın kolaylığını geocoding ile keşfedebilirsiniz!

Faydalı Linkler:

Geocoding işleminin nasıl yapıldığına dair aşağıdaki linklere bakabilirsiniz;