ArcGIS Online ve ArcGIS Server Kullanarak Veri Paylaşımı

ArcGIS Online ve ArcGIS Server Kullanarak Veri Paylaşımı

Coğrafi verileri depoladığınız yerel veri tabanında seçeceğiniz bilgileri, internet üzerinden kişi veya topluluklar ile paylaşabildiğiniz ve bunu yüksek güvenlikli, düşük bütçe ve az personel kaynağı ayırarak yapmak istediğinizde ArcGIS Online tam ihtiyacınız olan yazılım servisidir. Amacımız veri tabanımızı dış kullanıma yani ‘public’ kullanıma açmadan, içerdiği coğrafi verileri güvenilir bir platform içerisinde, kimlik doğrulama ve rol bazlı yetkilendirme yetenekleriyle, web haritaları kullanılarak veriyi paylaşmak.

ArcGIS Online bulut tabanlı haritalama ve analiz çözümüdür. Haritalar oluşturma, veri analizleri yapma ve bunların paylaşımı ve iş birliği için kullanılmaktadır. ArcGIS Online içerisinde tutulan veriler ve haritalar güvenli ve özel bir altyapı içerisinde tutulur ve haritalama ve BT gereksinimlerinizi karşılamak için yapılandırılabilir. ArcGIS Online üzerinde oluşturduğunuz web haritaları, web uygulamaları, yönetici panelleri v.b. ArcGIS Online içeriklerini kişi veya bir toplulukla kolay ve güvenilir bir şekilde paylaşılmasına imkan sağlamaktadır.

ArcGIS Online, ‘SaaS’ (software as a service – hizmet olarak yazılım) tipinde bir platform olduğundan bu hizmete üyeliğiniz olduğunda sadece üyeliğinizi yenilemek için ücret ödersiniz, herhangi bir donanım, işlemci, işletim sistemi lisansı v.b. giderleriniz olmaz. Performans olarak ArcGIS Online içerisinde oluşturduğunuz içeriğinizin yoğun kullanımlarında otomatik olarak ölçeklendiğinden 7×24 kesintisiz çalışıp hizmet vermeyi amaçlamaktadır.

Veri tabanınızdaki coğrafi verileri, güvenlik seviyesi yüksek ve belirlediğiniz kişi veya kişilere paylaşmayı imkan sağlayan ArcGIS Online’da web haritaları içerisinde “katman” olarak kolay şekilde paylaşabilirsiniz. Bununla birlikte ArcGIS eko sisteminde bulunan Workforce for ArcGIS, Navigator for ArcGIS, Explorer for ArcGIS, Collector for ArcGIS, ArcGIS Dashboard v.b. uygulamalar içerisinde kullanım imkanı da sağlamaktadır.

Veri Paylaşımı

Kurumsal veya kişisel veri tabanınızdaki coğrafi bilgileri 2 şekilde ArcGIS Online içerisinde kullanabilirsiniz.

1.      Veri Kopyalayarak

Veri tabanınızdaki verileri ArcGIS Desktop ürünü ile uygun formata dönüştürüp, ArcGIS Online içerisine aktarma işlemi yapabilirsiniz.

Artılar

  1. Hızlı şekilde verileri aktarımı.

Eksiler

  1. Veriler kopyalanacağından veri tabanında veri üzerinden yapılan değişiklikler ArcGIS Online içerisinde görünmeyecektir. Tam tersi durum da söz konusudur; içeri aktarım sonrasında ArcGIS Online’da yapılan veri değişiklikleri, yerel veri tabanına yansımayacaktır.
  2. Güncellenen veriler belirli aralıklarla ya manuel ya da yazılacak uygulamalar ile güncelliği tutulmalı hem veri tabanında hem de ArcGIS Online’da.
  3. İçeri aktarım dosya formatlarında veri limiti bulunması.
  4. Aynı veri hem veri tabanında hem de ArcGIS Online içerisinde bulunduğundan hangi verinin güncel olduğu oluşturacağınız özel iş akışları ile belirlenmiş olur.

2.      ArcGIS Server Kullanarak

ArcGIS Server’da referans olarak göstereceğiniz veri tabanınızdaki verileri kullanan web servisler (REST) oluşturarak, ArcGIS Online web haritalarında katman olarak bu servisleri tanıtıp paylaşım yapabilirsiniz.

Artılar

  1. Veri tabanını ArcGIS Server’a kaydedildikten sonra istenilen coğrafi tablolar ArcGIS Online içerisinde kullanılır.
  2. Veri kopyalama yapılmayıp, veri referansı edildiğinden, ArcGIS Online’da veri değişiklikleri direkt olarak veri tabanında gerçekleştirilir.
  3. Verinin her zaman en güncel versiyonu veri tabanında bulunur ve tekildir.

Eksiler

  1. Güvenli bir altyapıya ihtiyaç duyulmaktadır.
  2. Kullanım yoğunluğuna göre sunucu donanımları iyi olmalı.

Bu paylaşım şeklinde size ait olan veri tabanındaki bilgiler ile ArcGIS Online içerisinde servis olarak bulunan altlık haritaları kullanılarak bir web haritasında paylaşımıdır. Bu yapıda verileriniz hiçbir zaman ArcGIS Online ortamına taşınmaz. Web haritasını kim istekte bulunursa örneğin bir internet tarayıcı, o erişim istemektedir.

Yukarıdaki şekilde görüldüğü üzere, kendi iç ağınızda bulunan verileri içeren bir ArcGIS Server REST servisi, ArcGIS Online içerisinde bulunan bir web haritasında katman olarak eklenildiğinde, en sağdaki görüntü, istemcinin (tarayıcı) ekranında oluşur. Ve sizin ArcGIS Server’da bulunan servise istemci istek gönderir, ArcGIS Online değil. ArcGIS Online sadece aracı rolündedir.

ArcGIS Server kullanılarak veri tabanındaki bilgileri dış kullanıma açılacağı zaman, sistem mimarinin aşağıdaki resimde belirtildiği gibi uygun şekilde yapılandırılması gerekmektedir.

Genel Kullanım İçin Veri Paylaşımı Süreçleri

Öncelikle veri tabanınızda bulunan bir coğrafi tabloyu ArcGIS Server üzerinde servis olarak yayınlanmalı. Servisin genel kullanıma (“public”) açık şekilde paylaşılması gerekmektedir.

Sonra ArcGIS Online organizasyon hesabınızda bir web haritası oluşturup, katman olarak ArcGIS Server üzerinde paylaşmış olduğunuz servisin URL adresini katman olarak ekliyorsunuz. Oluşturulan web haritası da genel kullanıma açık şekilde paylaşılmalı.

Kurum dışında internet üzerinde bulunan dış kullanıcılar mobil cihaz veya bilgisayarlardan istekte bulundukları zaman, ArcGIS Online organizasyon hesabınızda oluşturduğunuz web haritasına erişim yapılacaktır. Web haritasında katman olarak tanıtılan servis, kurum içindeki veri tabanındaki bilgileri ArcGIS Server üzerinden paylaşılarak istemcinin ekranında verileriniz görüntülenecektir.

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

Esri Türkiye 2020

ArcGIS Survey123 Beta 3.10 Sürümü Güncellemeleri

Survey123 Early Adopter Community (EAC), yazılımların en yeni Beta sürümlerine erişmenize yardımcı olur. Mevcut Esri hesabınızla oturum açabilir ve yazılımlara, gelecek olan yeniliklerle ilgili dokümanlara ve forumlara erişebilirsiniz.

EAC, Survey123’nin yeni Beta sürümleriyle güncellendi. Survey123 web sitesini, web uygulamasını, saha uygulamasını ve Survey123 Connect’i desteklenen tüm platformlarda test edebilirsiniz. Aşağıda, test için kullanılabilen bazı Beta yeniliklerinin bir listesi detaylandırılmıştır.

Bir soru, Birçok Fotoğraf

Survey123 formlarınızdaki Görüntü sorularını yapılandırabilir, kullanıcıların birden çok fotoğrafı ilişkilendirmesine izin verebilirsiniz.

Bir Görüntü sorusu için birden çok görüntü veya dosya artık ilgili kayıtları eklemeye gerek kalmadan (tekrarlama yoluyla) veya ilgili ifadeleri kullanarak (görüntü sayısı bilinmiyorsa) bir ankete eklenebilir.

Survey123 Connect kullanıyorsanız, birden çok fotoğraf eklemeyi desteklemek için artık Görüntü sorularınıza çok satırlı görünüm uygulayabilirsiniz. Hesaplamalarınız, kısıtlamalarınız ve ilgili sütunlarınızdaki Görüntü sorularına karşı count-selected() gibi XLSForm fonksiyonlarını da kullanabilirsiniz. Bu, sizlere fotoğraf sayısını kayıt ile birlikte bir CBS detayı olarak saklama, kullanıcılar için minimum ve maksimum fotoğraf ekleme zorunluluğu getirme gibi yetenekleri sağlar.

Survey123 Connect’teki Harita Geliştirmeleri

Survey123 Connect artık kendi web haritalarınızı, mobil harita paketlerinizi, çevrimdışı harita alanlarınızı vb. kullanabilmeniz için anketinizdeki haritaları kolayca yapılandırmanıza olanak tanır. Yeni Bağlantılı İçerik bölümü, kuruluşunuzdaki mevcut haritaları taramanıza olanak tanır, böylece anketinize ulaşan kullanıcılar bunlara uygulamadan kolayca erişebilir.

Survey123 Kuruluş Ayarları

Survey123 Kuruluş Ayarları artık ArcGIS Administrator kullanıcıları tarafından kontrol edilebilir. Kullanıcıların ve Survey123 tasarımcılarının daha etkili olmasına ve kuruluşunuza tutarlılık getirmesine yardımcı olmak için bu ayarları kullanabilirsiniz. Administrator ayrıcalıklarına sahip bir kullanıcıyla oturum açtığınızda bu ayarlara Survey123 web sitesinden erişebilirsiniz. Aşağıdaki ekran görüntüsünde gösterildiği gibi, bir dizi ayar mevcuttur.

Ortak Yazar Rolü

Anket sahibinin anketi diğer kullanıcılarla ortak yazar olarak paylaşmasına olanak sağlamak için web sitesinde ortak yazar rolünü tanıtıldı. Böylece diğer kullanıcılar anket tasarımını güncelleme, anket verilerini görüntüleme/düzenleme, webhooks vb. işlemlerle  anket sahibinin anketi yönetmesine yardımcı olabilir. Ortak yazar olarak, aşağıdakiler dışında, bir anket sahibi olarak işlemlerin çoğunu gerçekleştirebilirsiniz:
  • Araştırmalarım: Anketi silme işlemi
  • Tasarım: Anketi ilk kez yayınlama işlemi
  • Birlikte Çalışın: Anketi diğer kullanıcılarla paylaşma
  • Veri: Yeni bir detay raporu şablonu yükleme
Ortak yazarları Birlikte Çalışın> Update Survey (Anketi Güncelleştirme) sekmesinden atayabilirsiniz ve anketinizi paylaşılan güncelleştirme grubu (shared update group) ile paylaşabilirsiniz.
Yerel Görüntü Yükleme
3.10 Beta Sürümü ile Survey123 web sitesi yerel cihazlardan görüntü yüklemeyi destekler. Yerel görüntüler aşağıda listelenenler için eklenebilir:
  • Araştırma Başlığı
  • Araştırma Açıklaması
  • Not sorusu
  • Görünüm > Temayı Düzenle > İçerik  Arka Plan
  • Görünüm > Temayı Düzenle >Web Sayfası > Arka Plan
  • Ayarlar > Teşekkür Ekranı

Özet Raporlar

Survey123 web sitesinin detay raporu işlevselliği, bireysel anket yanıtlarının ayrıntılı raporlarına izin vermenin yanı sıra, çeşitli yanıtlardaki verilerinizin özetlerine izin verecek şekilde bir işlevsellik de sağlar.Tüm Kayıtlar için tablo ve anket katmanınızda ayarlanmış bir seçimi içeren rapor şablonu oluşturabilirsiniz. Ayrıca bu kayıtlar için istatistik ekleyebilirsiniz.

Özet işlevleri, aynı anda yazdırılan diğer detay raporlarının maliyetinin dışında bir kredi ücretine tabi değildir. Özet Raporlar ile ilgili daha detaylı bilgiye buradan ulaşabilirsiniz.

Özel JavaScript Fonksiyonları ve pulldata ()

Bu yetenek sadece Advanced XLSForm kullanıcıları içindir. Pulldata () XLSForm fonksiyonunu kullanarak özel bir JavaScript fonksiyonunu çalıştırabilirsiniz. Bu, XLSForms’da ifade edilmesi zor olan JavaScript sözdizimindeki karmaşık mantığı modellemenizi sağlar. Tekrarlarda yinelenen değerler olup olmadığını veya web servislerindeki arama değerlerini kontrol edebilir, çokgen sorgularında nokta gerçekleştirebilir ve çok daha fazlasını yapabilirsiniz.

JavaScript fonksiyonlarını test etmenize ve kendi fonksiyonlarınızı çalıştırmanıza yardımcı olmak için Survey123 Connect’te iyileştirmeler yapılmıştır. Daha detaylı bilgiye buradan ulaşabilirsiniz.

Survey123 Web Sitesi Kurulumu

Survey123 web sitesi için Windows kurulumu neredeyse hazırdır. Bu, survey123.arcgis.com‘un ArcGIS Enterprise üzerinden çalışacak şekilde yapılandırılmasını sağlamak yerine Survey123 web sitesini yerel olarak kurmak isteyen kullanıcılar içindir. Resmi olarak kullanıma sunulmadan önce deneme sürümünü test edebilirsiniz.

Ve daha fazlası…

Early Adopter Program aracılığyla birçok yeteneği test edebilirsiniz. Survey123 web sitesi için güncelleme detaylarına buradan ulaşabilirsiniz. Beta sürümlerinin aynı zamanda GeoNet aracılığıyla talep ettiğiniz birçok hata düzeltmesine ve önemli geliştirmelere yönelik olduğunu görebilirsiniz.

ArcGIS uygulamaları ve güncellemeleriyle ilgili daha fazla bilgiye ulaşmak için blog sayfamızı takip edebilirsiniz.

 Esri Türkiye 2020

Nasıl Yapılır: ArcGIS Enterprise Güncellemelerini Otomatikleştirme

Daha önce yayınladığımız “Nasıl Yapılır: ArcGIS Enterprise Güncellemelerini Yüklenmesi” blog yazımızda ArcGIS Enterprise Güncellemelerini 3 farklı yolla nasıl yükleyebileceğinize değinmiştik. Bu yollara ek olarak ArcGIS Enterprise Patch Notification aracını sessiz bir şekilde çalıştıran komutları bir toplu komut dosyası haline getirip CRON ya da Windows Task Scheduler’a ekleyip çalışma zamanlarını belirleyerek daha da zahmetsiz hale getirebilirsiniz.

Bu yazımızda ise Windows işletim sistemine sahip sistemlerde güncellemeleri otomatikleştirme işleminden bahsedeceğiz. Bunun için öncelikle aşağıdaki komut satırı örneğini kullanarak bir komut satırı dosyası hazırlayacağız ve bu dosyayı .cmd uzantılı olacak şekilde kaydedeceğiz.

cd “C:\Program Files\ArcGIS\Server\tools\patchnotification” && call patchnotification.bat -c -i sec

Hazırlanan bu komut satırı dosyasını Windows Task Scheduler içerisinde oluşturacağımız bir kurala atayarak, güncellemeleri belirleyeceğiniz tek seferlik, günlük, haftalık veya aylık periyotlarla indirip kurulmasını sağlayabilirsiniz.

ArcGIS Enterprise’ın kurulu olduğu makinede Başlat>Görev Zamanlayıcı (Start>Task Scheduler) yolunu izleyerek Görev Zamanlayıcı’yı çalıştırabilirsiniz.

Belirleyeceğimiz kuralı içeren bu kısmı organize etmek için “ArcGIS Enterprise Patch” adında yeni bir klasör oluşturarak ilerleyeceğiz.

Yeni bir görev oluşturmak için biraz önce oluşturduğumuz klasöre sağ tıklayarak listeden Create Task’ı seçeceğiz.

Kural oluşturmamız için açılan ekranda ilgili ayarlamaları yaparak kuralımızı tamamlayabiliriz.

General sekmesinde kurala bir ad ve açıklama girmemiz yeterlidir. Bu kısımda önemli olan ArcGIS Enterprise servislerini çalıştıran Windows kullanıcı bilgilerini sağlıyor olmamızdır. Kullanıcı oturum açsa da açmasa da kuralı çalıştırması için de “Run whether user is logged on or not” seçeneğini işaretlememiz ve yönetici olarak çalıştırabilmesi için de “Run with highest privileges” kutucuğunu seçmemiz gerekmektedir.

Triggers sekmesinde bu kuralın ne sıklıkla tetikleneceğini yani ne zaman ve hangi saatlerde çalıştırması gerektiğini belirleyeceğiz. Örnek çalışmamızda Güvenlik (Security) yamalarını kuralı oluşturduğumuz tarihten itibaren, her ayın ilk gününde kontrol edecek ve indirecek şekilde ayarladık.

Bu kısımda dikkat edilmesi gereken nokta ise kuralın çalışmaya devam etmesini istediğiniz süre boyunca “Enabled” kutucuğunun işaretli kalması gerekmektedir.

Actions sekmesinde New butonuyla birlikte, “Start a program” seçeneğiyle ilerleyerek oluşturduğumuz .cmd uzantılı dosyayı tanıtıyoruz.

Conditions sekmesi için önemli olan nokta ise yalnızca dizüstü bilgisayarlar için dikkat edilmesi gereken “Start the task only if the computer is on AC power” ve “Stop if the computer switches to battery power” seçenekleridir. Dizüstü bilgisayarlarda bu seçenekler işaretliyse bilgisayarınızın şarj kablosunun takılı olduğundan emin olunuz.

Settings sekmesi içerisinde de eğer görev bir nedenden dolayı gecikirse en kısa zamanda tekrar çalıştırılmasını istiyorsanız ilgili kutucuğu işaretlemelisiniz.

Siz de kendi kuralınızı oluşturarak güncellemelerinizi otomatikleştirebilirsiniz.

ArcGIS Enterprise ile ilgili daha fazla blog yazısı için https://blog.esri.com.tr/?s=ArcGIS+Enterprise adresini inceleyebilirsiniz.

Esri Türkiye, 2020

ArcGIS API for JavaScript ile Web Uygulamaları – 4 Öznitelik Sorguları

ArcGIS API for JavaScript ile Web Uygulamaları – 4 Öznitelik Sorguları

Bu blog yazımızda web haritamızda eklediğimiz katmanın içerdiği öznitelik (sütunlar) değerlerine göre sorgulamaların nasıl yapıldığını öğreneceğiz.

Haritamızda görünen coğrafi verilerden istediğimiz sorguları yapabilmek için “Query” sınıfını kullanacağız. Bu sınıf yardımıyla üç tip sorgulamalar yapılabilmektedir:

  1. Öznitelik sorgular
  2. Mekânsal sorgular
  3. İstatistiksel sorgular

Öznitelik sorguları “where” özelliğinde SQL cümleleri tanımlanarak yapılmaktadır. “outFileds” özelliği ile sorgulama sonucunda dönecek cevap özniteliklerini belirliyoruz. Sadece istediğimiz dönüş bilgilerini belirtirsek performans konusunda sıkıntı yaşanmaz. Çünkü yapılacak her sorgu sonucundan geri dönüş cevabının süresi “outFields” içerisinde belirtilen cevap öznitelik miktarına göre değişecektir.

Öznitelik sorgu sonuçları kullanım durumunuza göre üç farklı özellik kullanılarak değerlendirilebilir:

  1. returnGeometry: Sorgu sonuçları içerisinde dönen bilgilerde ilgili objelerin geometri bilgisi de eklenir. Bu parametre performansı etkilemektedir. Eğer yapacağınız sorgu sonucunda sadece öznitelik bilgilerine ihtiyacınız var ve geometri bilgisine ihtiyacınız yoksa bu özellik değerini “false” olarak belirleyin. Varsayılan olarak “false” değeri belirlenmiştir.
  2. outStatics: İstatistiksel sorgulama yapıp sonuçları değerlendirileceğinde bu özellik kullanılmalıdır. İstatiksel sorgulama sonucunda katmandan feature dönmez, sadece istenen istatiksel bilgi için sayı değeri içeren obje sunulur.
  3. returnDistinctValues: Bu özellik değeri “true” olarak belirlendiğinde “outFields” özelliğinde belirlenen sonuç kümesi içerisinde tekil bilgileri içeren metin dizisi sunulur.

FeatureLayer”, “FeatureLayerView”, “CSVLayer”, “CSVLayerView”, “SceneLayer” ve “SceneLayerView” katman sınıflarında sadece sorgulama yapılabilmektedir.

Adımlar

  1. Bir önceki blog yazımızda kullandığımız “CSVLayer” üzerinde öznitelik sorgulaması yapacağız. O blog yazımızdaki kodları kullanarak yeni bir HTML dosyası oluşturunuz.
  2. HTLM içerisine ekleyeceğimiz düğmelere basarak sorgulamalar yapacağız.

Öncelikle HTML sayfamız içerisinde sonuçları ve düğmelerimizin gösterimini sağlamak için bir “div” elementi oluşturuyoruz.

<div id="resultsDiv" class="esri-widget">
       <div class="titleDiv">
             <b>Sonuç: <a class="myResult"></a></b>
       </div>
       <div class="buttonsDiv">
             <button id="btnPhar" type="button">Eczane Miktarı</button>
       </div>
       <div class="buttonsDiv">
             <button id="btnHos" type="button">Hastane Miktarı</button>
       </div>
       <div class="buttonsDiv">
             <button id="btnProf" type="button">Doktor Arama</button>
       </div>
</div>

Oluşturduğumuz bu “div” elementini harita içerisinde gösterimini sağlamak için “MapView” sınıfını kullanıyoruz.

view.ui.add("resultsDiv", "bottom-left");

Bu şekilde içeriğimiz harita görünümü içerisinde yer alacaktır.

Oluşturduğumuz her bir düğmede, “click” olayını yakalamak ve sonrasında sorgulamalar yapmak için olay dinleyiciler oluşturuyoruz. Eczane miktarını bulmak için kullanacağımız düğme için oluşturduğumuz olay dinleyici aşağıdaki gibi yazılmalıdır.

var elementBtnPhar = document.getElementById('btnPhar');
var resultElement = document.getElementsByClassName('myResult')[0];
elementBtnPhar.addEventListener('click', function (evt) {
       resultElement.innerHTML = "Sorgulama Başlatıldı...";
       var query = csvLayer.createQuery();
       query.where = "amenity = 'pharmacy'";
       query.outFields = ['amenity'];
       csvLayer.queryFeatures(query)
             .then(function (response) {
                    resultElement.innerHTML = response.features.length;
             });
});

Öncelikle ilgili düğmenin kimlik bilgisinden HTML elemanı olarak buluyoruz. Sonrasında “addEventListener” fonksiyonu kullanımında “click” olayının yakalanmasını sağlıyoruz. Böylelikle düğmeye basılması durumunda istediğimiz kod parçası çalıştırılacaktır.

Çalıştırılmasını istediğimiz kod parçasında bir “Query” sınıfı “CSVLayer” nesnesi kullanılarak oluşturuluyor ve sorgulama için gerekli sorgu cümlesi “where” özelliğinde belirtiliyor. Amacımız düğmeye basılınca eczane miktarını bulmak olduğundan katmanımız içerisindeki özniteliklerdeki “amenity” sütunundaki “pharmacy” olarak belirtilen tüm kayıtların çekilmesi gerekmektedir. Sonuç olarak sadece bir sütun geri dönmesini isteyelim. Sorgulama sonucu tarafımıza ulaştığında ise sorgu cevabı içerisindeki listenin miktarını “Sonuç” kısmına “innerHTML” HTML özelliği kullanılarak yazdıralım.

Hastane miktarını bulmak için sorgumuzda “amenity” sütunundaki “hospital” olarak arama yapmalıyız.

Doktor arama düğmesi ise “name” sütununda “Prof” kelimesi geçen ve “amenity” sütununda “doctors” olanların “X”, “Y” ve “name” sütun bilgileri internet tarayıcınızın konsolunda yazılacaktır.

Böylelikle diğer düğmelerimize ait sorguları yazdığımızda HTML sayfamızdaki kodun son hali aşağıdaki gibi olmalı:

<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no" />
    <title>CSVLayer Kullanımı</title>
    <style>
        html,
        body,
        #viewDiv {
            padding: 0;
            margin: 0;
            height: 100%;
            width: 100%;
            background-color: aliceblue;
        }
            #viewDiv canvas {
                filter: drop-shadow(16px 16px 10px rgba(0, 0, 0, 0.5));
            }
        .esri-legend {
            background-color: rgba(255, 255, 255, 0.8);
        }
        #resultsDiv {
            padding: 12px 15px;
            margin: 0;
            height: 100%;
            width: 100%;
            background-color: white;
        }
        .buttonsDiv {
            margin: 5px;
        }
    </style>
    <link rel="stylesheet" href="https://js.arcgis.com/4.15/esri/themes/light/main.css" />
    <script src="https://js.arcgis.com/4.15/"></script>
    <script>
        require([
            "esri/Map",
            "esri/layers/CSVLayer",
            "esri/views/MapView",
            "esri/widgets/Legend",
            "esri/core/urlUtils",
            "dojo/on"
        ], function (Map, CSVLayer, MapView, Legend, urlUtils, on) {
            urlUtils.addProxyRule({
                urlPrefix: "data.humdata.org",
                proxyUrl: "http://localhost:82/proxy.ashx"
            });
            //Eğer CSV dosyası sitenizin domain'i altında değilse CORS yeteneği olan bir sunucu veya bir Proxy kullanmalısınız.
            const url =
                "https://data.humdata.org/dataset/2e45ecbd-7940-4775-a1da-57603118390c/resource/27f8e122-c2df-49b4-97e5-23ba3d4407e5/download/turkey.csv";
            //Pop-up gösterim şablonu
            const template = {
                title: "Türkiye Sağlık Tesisleri",
                content: "<b>Tesis Bilgileri</b><br><b>Tip:</b> {healthcare}<br><b>Adı:</b>{name}"
            };
            //Nokta tabanlı CSV dosyalarından (csv, txt) oluşturulan katman.
            const csvLayer = new CSVLayer({
                url: url,
                copyright: "https://data.humdata.org/dataset/turkey-healthsites",
                popupTemplate: template
            });
            //Gösterim sembolojiler. Tekil değereler göre gruplanıp, 'healthcare' sütun değerlerine göre semboloji belirlenir
            const myRenderer = {
                type: "unique-value",
                field: "healthcare",
                defaultSymbol: {
                    type: "picture-marker",
                    url: "images/other.png",
                    width: "16px",
                    height: "16px"
                },
                defaultLabel: "Diğerleri",
                uniqueValueInfos: [
                    {
                        value: "pharmacy",
                        symbol: {
                            type: "picture-marker",
                            url: "images/pharmacy.jpg",
                            width: "16px",
                            height: "16px"
                        },
                        label: "Eczane"
                    },
                    {
                        value: "hospital",
                        symbol: {
                            type: "picture-marker",
                            url: "images/hospital.png",
                            width: "16px",
                            height: "16px"
                        },
                        label: "Hastane"
                    },
                    {
                        value: "doctor",
                        symbol: {
                            type: "picture-marker",
                            url: "images/doctor.png",
                            width: "16px",
                            height: "16px"
                        },
                        label: "Doktor"
                    },
                    {
                        value: "dentist",
                        symbol: {
                            type: "picture-marker",
                            url: "images/dentist.png",
                            width: "16px",
                            height: "16px"
                        },
                        label: "Diş Hekimi/Poliklinik"
                    }
                ]
            };
            csvLayer.renderer = myRenderer;
            //Harita
            const map = new Map({
                basemap: "dark-gray"
            });
            map.add(csvLayer);
            //Harita görünümü
            const view = new MapView({
                container: "viewDiv",
                map: map,
                center: [34.8442835, 38.9323346], // boylam, enlem
                zoom: 7
            });
            //Lejant
            var legend = new Legend({
                view: view,
                layerInfos: [{
                    layer: csvLayer,
                    title: "Lejant"
                }]
            });
            view.ui.add(legend, "bottom-right");
            view.ui.add("resultsDiv", "bottom-left");
            var elementBtnPhar = document.getElementById('btnPhar');
            var resultElement = document.getElementsByClassName('myResult')[0];
            elementBtnPhar.addEventListener('click', function (evt) {
                resultElement.innerHTML = "Sorgulama Başlatıldı...";
                var query = csvLayer.createQuery();
                query.where = "amenity = 'pharmacy'";
                query.outFields = ['amenity'];
                csvLayer.queryFeatures(query)
                    .then(function (response) {
                        resultElement.innerHTML = response.features.length;
                    });
            });
            var elementBtnHos = document.getElementById('btnHos');
            elementBtnHos.addEventListener('click', function (evt) {
                resultElement.innerHTML = "Sorgulama Başlatıldı...";
                var query = csvLayer.createQuery();
                query.where = "amenity = 'hospital'";
                query.outFields = ['amenity'];
                csvLayer.queryFeatures(query)
                    .then(function (response) {
                        resultElement.innerHTML = response.features.length;
                    });
            });
            var elementBtnProf = document.getElementById('btnProf');
            elementBtnProf.addEventListener('click', function (evt) {
                resultElement.innerHTML = "Sorgulama Başlatıldı...";
                var query = csvLayer.createQuery();
                query.where = "amenity = 'doctors' AND name LIKE '%Prof%'";
                query.outFields = ['name', 'X', 'Y'];
                csvLayer.queryFeatures(query)
                    .then(function (response) {
                        for (var i = 0; i < response.features.length; i++) {
                            var resultFeature = response.features[i].attributes;
                            console.log("X:" + resultFeature['X'] + "\t Y:" + resultFeature['Y'] + "\t name:" + resultFeature['name']);
                        }
                        resultElement.innerHTML = response.features.length;
                    });
            });
        });
    </script>
</head>
<body>
    <div id="viewDiv"></div>
    <div id="resultsDiv" class="esri-widget">
        <div class="titleDiv">
            <b>Sonuç: <a class="myResult"></a></b>
        </div>
        <div class="buttonsDiv">
            <button id="btnPhar" type="button">Eczane Miktarı</button>
        </div>
        <div class="buttonsDiv">
            <button id="btnHos" type="button">Hastane Miktarı</button>
        </div>
        <div class="buttonsDiv">
            <button id="btnProf" type="button">Doktor Arama</button>
        </div>
    </div>
</body>
</html>
Bu blog yazımızda katman bilgileri içerisinde öznitelik sorgulaması yapmayı, düğme ile etkileşim kurmayı, harita görünümü içerisine özel panel eklemeyi öğrendik.

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.

Esri Türkiye 2020

Bulut Ortamında Gerçek Zamanlı Büyük Veriyle Çalışmak: ArcGIS Analytics for IoT

Bulut Ortamında Gerçek Zamanlı Büyük Veriyle Çalışmak: ArcGIS Analytics for IoT

ArcGIS Analytics for IoT, ArcGIS ailesine gerçek zamanlı görselleştirme ve analitiklerde yeni bir anlayışı getirmiştir. Buradaki en önemli yenilik; görevleri ölçeklendirmek için dağıtılmış bulut işlemeyi (cloud processing) kullanarak IoT sensörü verilerini görselleştirmeyi, analiz etmeyi, depolamayı ve bunlara göre aksiyonlar alma gibi özellikleri sunmasıdır. Uygulama; CBS analisti, veri uzmanları gibi büyük veri ile çalışan kişilerin ihtiyaçlarını karşılayacak şekildedir.

Uygulama içinde Hizmet Olarak Yazılım (SaaS) modeliyle yapılandırma olmadan hızlı bir şekilde çalışmaya başlayabilirsiniz. Bu başka bir deyişle şu anlama gelmektedir; ArcGIS Online’ın bir parçası olarak bulutta bulunan kullanıma hazır bir IoT çözümü elde edersiniz. Bu durum, kurum içinde dağıtılmış bir yazılım yüklemenize veya altyapıyı yönetmenize gerek olmadığı anlamına gelir. Bunun yerine Esri, yazılımı ve altyapıyı sizin adınıza yönetir, böylece hızlı bir şekilde çalışmaya başlayabilirsiniz.

ArcGIS Analytics for IoT ile gerçek zamanlı geofence olarak da bilinen coğrafi sınırlama işlemlerini yapabilirsiniz. Örneğin; araç, uçak veya gemi gibi hareketli bir varlığın belirli bir teslimat alanı, kısıtlı hava sahası veya belirlenmiş nakliye şeridi gibi bir ilgi alanı içinde veya dışında olması ile ilgili çalışmaları bu uygulama ile gerçekleştirebilirsiniz. Bu konuda ayrıntılı bilgi için blog yazımızı buradan inceleyebilirsiniz.

Hemen hemen her tür akış verisine bağlanabilir, bu verileri gerçek zamanlı olarak işleyebilir ve belirtilen koşullar oluştuğunda otomatik mesajlar ve uyarılar gönderebilirsiniz. Ayrıca, yüksek hacimli geçmiş verileri işlemek ve örüntüler (pattern), eğilimler ve anormallikler hakkında bilgi edinmek için analitik modeller tasarlayabilirsiniz. Bu özellikler hep birlikte; gerçek zamanlı farkındalığı arttırmanıza ve kuruluş genelinde paylaşabileceğiniz bilgileri edinmenize yardımcı olur.

 

ArcGIS Analytics for IoT uygulama arayüzü

Kullanım alanlarına örnek olarak; şehir içi ulaşım departmanı için çalışan bir CBS analisti, araçlarından gelen verilerden yararlanarak çalışmalar yapabilir. Araç verilerini alan yol sensörleri, bu gözlemleri ArcGIS Analytics for IoT’ye bir yayın olarak aktarabilir; böylece hız ve trafik verilerinin gerçek zamanlı olarak görüntülenmesini sağlar. Buradan yola çıkarak araçlar için yeni rotalar oluşturabilir. Bir başka örnek olarak altyapı sektöründe elektrik kesintileri de dahil olmak üzere ağlarındaki akıllı sayaçlardan ve sensörlerden gerçek zamanlı okumalar toplayabilir. Elektrik kesintisi olaylarını izlemede gerçek zamanlı analiz gerçekleştirerek gücün hızlı bir şekilde geri kazanılmasını sağlamak için yöneticiye veya yakınlarda çalışan saha ekiplerine bildirim gönderilebilir. Kesintilerin nerede daha sık oluştuğunu ve nedenini daha iyi anlamanıza yardımcı olmak için alan ve zaman içindeki tarihsel kesinti verilerini değerlendirmek için büyük veri analizi uygulanabilir. Bu şekilde, kuruluşun hatalı ekipmanı onarmasına veya değiştirmesine yardımcı olarak gelecekteki kesintilerin önlenmesi sağlanabilir.

Çalışma Şekline Hızlı Bir Bakış

  • Veri kaynağı Oluşturma

Uygulamada çalışmaya başlarken öncelikle veri kaynağı (feed) türünü belirtmeniz gerekir. Veri kaynağıoluşturarak gerçek zamanlı veri akışlarını alabilirsiniz ve  bunu anında bir web haritasında görselleştirebilirsiniz.

Veri kaynağı (Feed) nedir?

ArcGIS Analytics for IoT’ye gelen gerçek zamanlı veri akışıdır. Feed’ler genellikle Nesnelerin İnterneti (IoT) platformları veya üçüncü taraf API’lar gibi harici gözlemsel veri kaynaklarına bağlanır. Bunlar gelen tablo, nokta, çizgi veya çokgen verilerini ayrıştırır, analiz ve görüntüleme için sunar. Feed aynı zamanda bir tür akış katmanıdır (stream layer) ve haritaya eklenebilir, böylece bilgiler alınır alınmaz görselleştirilebilir. Ayrıca ArcGIS katmanlarınızdan, Azure IoT ve AWS IoT gibi IoT bulut hizmet sağlayıcılarından ve Kafka, MQTT ve RabbitMQ gibi mesajlaşma sistemlerinden veri alabilirsiniz.

ArcGIS katmanlarından, bulut hizmet sağlayıcılarından ve mesajlaşma sistemlerinden veri alabilme

 

  • Gerçek Zamanlı Analitik 

Veriler ArcGIS Analytics for IoT’ye aktıkça, alınan iletileri tek tek işleme ve analizini yapmanıza olanak tanıyan gerçek zamanlı analizler tasarlayabilirsiniz. Gerçek zamanlı veriler genellikle verileri dönüştürme, coğrafi sınırlama ve olay tespiti gibi konularda kullanılmaktadır. Analizin sonuçları yeni veya mevcut bir detay katmanında saklanabilir, kilit paydaşlara e-posta olarak gönderilebilir veya Kafka veya RabbitMQ gibi üçüncü taraf mesajlaşma sistemlerine yazılabilir.

 

  • Büyük Veri Analizi 

Gerçek zamanlı analizler veri akışını alındığı gibi işlerken, büyük veri analizleri bir kaynaktan mevcut verileri yüklemenize ve depolanan verilerde yer ve zaman içinde toplu analiz ve işleme yapmanıza olanak tanır. Büyük veri analizi tipik olarak gözlemleri özetlemek, örüntü analizi yapmak ve olay tespiti için kullanılır. Büyük veri analizleri bir kez çalışacak şekilde yapılandırılabilir veya yinelenen bir şekilde çalışmak üzere programlanabilir. Gerçek zamanlı ve büyük veri analitiği çalıştırıldığında sonuçlar bir çıktıya gönderilir. Çıktı, gerçek zamanlı veya büyük veri analitiğinde son adım olarak alınacak bir sonuç veya aksiyondur. Analytics, verileri yeni veya mevcut bir detay katmanına depolama, bir akış katmanına veri gönderme, e-posta gönderme, Amazon S3 gibi bulut mağazalarına yazma gibi çeşitli farklı hedeflere veri yayabilir ve cihaz çalıştırma için üçüncü taraf IoT sistemlerini tetikleyebilir.

Büyük veri analizinizi tamamladıktan sonra, bulgularınızı başkalarıyla paylaşabilirsiniz. ArcGIS Analytics for IoT, bilgileri iş akışlarınıza en uygun şekilde yaymanıza olanak tanır. Analiz sonuçlarını ArcGIS haritalarında ve uygulamalarında kolayca görüntülenebilen detay katmanları olarak yayınlayabilirsiniz.

İşlem ve Depolamanın Yönetimi ve İzlenmesi

Kuruluş yöneticisi olarak ArcGIS Analytics for IoT aboneliğinin işlem ve depolama kullanımını doğrudan Analytics for IoT uygulamasında görüntüleyebilirsiniz. Genel bilgi işlem ve depolama tüketimi Giriş sayfasında özetlenir ve ayrıntılı bilgi Compute Utilization ve Storage Utilization sayfalarında bulunur.

 

ArcGIS Analytics for IoT Kullanmak için;

ArcGIS Online aboneliğinizde ArcGIS Analytics for IoT lisansına sahip olmalısınız. Bu abonelik; kullanım durumlarını izleme (monitoring use cases) ve çoklu izleme (multiple tracking) için yeterli bilgi işlem ve depolama kapasitesi içermelidir. Altyapı veya sistem yapılandırması gerekmez ve kullanıcı sayısında bir sınır yoktur. Kuruluşunuzun Creator türünde veya daha yüksek kullanıcı türünde bir üyesine, ArcGIS Analytics for IoT’ye erişim izni verilebilir ve kullanıcı hemen feed’ler, gerçek zamanlı, büyük veri analizi ve çıktılar oluşturmaya başlayabilir.

 

Kaynaklar:

Esri Türkiye 2020

ArcGIS Ürünleri ile COVID-19 Sürecinde Gıda Dağıtım Çözümleri

Etkin bir şekilde yönetilen gıda dağıtımı, mal ve hizmetlerin güvenli bir şekilde ve zamanında teslim edilmesini sağlar. Özellikle COVID-19 süreci gibi risk faktörlerinin yoğun olduğu dönemlerde gıda dağıtımının önemi artmaktadır. Günümüzde COVID-19 sürecinde sokağa çıkma yasağı olan günler veya sokağa çıkma yasağı bulunan yaş grupları için gıda dağıtımı zorunluluk haline gelmiştir.

Bir gıda dağıtım sürecinin başarılı olabilmesi için konum bilinci, gerçek zamanlı izleme ve iletişimin bir entegrasyonu olmalıdır. Konum bilinci, durumsal farkındalık sağlayarak hızlı yanıt vermeye hazır olmanızı sağlar. Esri çözümleri ile gıda dağıtım süreçlerini interaktif bir şekilde yönetmek için ihtiyacınız olan tüm bilgileri edinebilirsiniz.

Gıda dağıtım sürecinin ilk adımı vatandaştan gelen taleplerin toplanmasıdır. İnsanlar bu süreçte telefonla veya internet üzerinden gıda talebinde bulunabilirler. Gıda taleplerinin kolay ve hızlı bir şekilde konum bazlı olarak alınabilmesi için bir web uygulaması çözümü kullanılabilir. Gıda taleplerini bir web uygulamasında Twitter üzerinden konum bilgisi paylaşılmış olan tweetler kullanılarak alabilirsiniz ve hızlıca talepler nerelerden geliyor ve nerelerde yoğunlaşıyor görebilirsiniz.

ArcGIS Configurable Apps ile hiçbir kod bilgisi gerekmeden ihtiyaca göre hazır şablonlar üzerinden kendi interaktif web uygulamanızı tasarlayabilir ve istediğiniz gibi yapılandırabilirsiniz. ArcGIS Online veya ArcGIS Enterprise’da “İçerik” sekmesinden “Oluştur” butonuna tıklayarak Yapılandırılabilir Uygulamalar’ı seçebilir ve ihtiyacınıza göre şablonlar arasından seçim yapabilirsiniz.

Gıda taleplerinin toplanabilmesi için Yapılandırılabilr Uygulamalardaki şablonlar arasından “Halka Açık Bilgiler” şablonu kullanılmıştır.

Hazırlanan bu çözüm ile bir web uygulaması oluşturularak Twitter üzerinden sosyal medya akışının anlık olarak görüntülenebilmesi sağlanmıştır. Yapılandırma aşamasında belirlenen sosyal medya etiketi ile atılan konum bazlı tweetler harita üzerinde görüntülenebilir ve üzerine tıklandığında taleplere ulaşılabilir. Örneğin, #corona etiketi ile konum bilgisi paylaşılmış olarak atılan herhangi bir tweet haritada eş zamanlı olarak konumlanacaktır. Böylece belirlenen etiket ile vatandaşlardan hızlı bir şekilde gıda talepleri alınabilir ve Twitter üzerinden büyük bir kitleye ulaşılabilir.

Gıda dağıtımı iş akışlarından bir diğer çözüm ise toplanan gıda taleplerinin ve depo stok bilgilerinin tek bir yönetici ekranından anlık olarak takip edilmesidir. Ofis tarafında operasyon yöneticisi, bu talepleri anlık olarak görüntüleyebilir ve talep detaylarına ulaşabilir. Böylece dağıtım ekiplerini hızlı bir şekilde yönlendirebilir. Ayrıca yine bu yönetici ekranı üzerinden depolar, üreticiler ve stok miktarları ile ilgili verilerle grafikler oluşturulabilir ve tek bir ekrandan tüm gıda dağıtım süreçlerindeki bilgilere erişilebilir.

Gıda dağıtım sürecinde bir diğer adım talepler doğrultusunda vatandaşa dağıtımın gerçekleştirilmesidir. Gıda dağıtımının, ofis tarafında yönetiminin sağlanması ve saha tarafında dağıtım işlemlerinin gerçekleştirilmesi olmak üzere iki kolu vardır. Dağıtım sürecinde ofis ve diğer ekip üyeleriyle anlık olarak birebir iletişimin sağlanması bu süreci hızlandıracaktır. ArcGIS Mission ile tüm bu gereksinimleri tek bir platformdan gerçekleştirebilirsiniz. ArcGIS Mission 3 bileşenden oluşan bir platformdur.

  • ArcGIS Mission Server ile kendi sunucunuzda çalışabilirsiniz.
  • ArcGIS Mission Manager ile ofis tarafında sahadaki personel ile iletişime geçebilir ve takibini sağlayabilirsiniz.
  • ArcGIS Mission Responder uygulamasına sahada tablet veya telefonunuzdan erişebilir ve diğer takım arkadaşlarınız veya ofis yöneticiniz ile hızlı bir şekilde iletişime geçebilirsiniz.

Gıda dağıtımı için ArcGIS Mission Manager ile öncelikle bir görev oluşturulmuştur ve bu görev için harita tanımlanarak, dağıtım ekipleri ve ekipler için üyeler belirlenmiştir. Ayrıca ekipler için sorumlu oldukları çalışma alanları sınırlar ile belirlenmiştir. Harita üzerinde alınan gıda talepleri ve çalışma alan sınırları konumlandırılmıştır. Oluşturulan görev açıldığında karşınıza bir yönetici ekranı açılmaktadır. Bu ekranda ekipleri ve üyeleri görebilirsiniz. Ayrıca üyelerin bağlantı durumları hakkında bilgi alabilirsiniz. Tüm iletişim bildirimleri tek bir ekrandan takip edilebilmektedir. Harita üzerinden sahadaki personelin konumlarını ve izlerini takip edebilirsiniz.

Saha tarafında dağıtım ekipleri açılan göreve mobil olarak erişerek görev haritasını, mesajları, görevle ilgili materyalleri diğer takım arkadaşlarının konumlarını görüntüleyebilir ve anlık olarak mesajlar gönderebilir. Örneğin, ofis tarafında oluşturulan “Unlu Mamüller Dağıtım Ekibi” seçilerek bir mesaj gönderildiğinde anlık olarak mobil ekranda mesaj görülür ve birebir iletişim sağlanabilir. Ayrıca GeoMessage özelliği ile nokta, çizgi veya çokgen çizimler yapılarak mesajlar gönderilebilir ve böylece konum bazlı iletişim sağlanmış olur. Örneğin bir alan çizilip bu alanda dağıtım tamamlanmıştır şeklinde mesaj gönderildiğinde sahadaki personel bu alanı ve mesajı görecek ve orada vakit harcamayıp zamandan tasarruf etmiş olacaktır. Ayrıca dağıtım ekiplerinin stoklarının bitmesi durumunda anlık olarak ofis tarafına mesaj göndererek bilgilendirme sağlanabilir ve destek isteği hızlı bir şekilde iletilebilir.

Gıda dağıtım sürecindeki bir diğer aşama ise dağıtım ekiplerinin süreç işlerken hızlı bir şekilde sahadan verileri ofise iletebilmesidir. ArcGIS QuickCapture uygulaması ile dağıtım ekipleri dağıtılan ürünleri ve miktarlarını konum bazlı olarak ofise hızlı bir şekilde ileteceklerdir. Ayrıca bu çözüm ile hangi araç, nereye, ne kadar ürün dağıtmış görülebilir ve gerektiği durumlarda anlık olarak stok desteği sağlanabilir.

ArcGIS QuickCapture kullanım kolaylığı sağlayarak büyük butonlarla ve araç içinde hareket halindeyken dahi konum doğruluğunu yakalayarak verileri ofis ortamına iletir.

Dağıtım ekibi, mobil ortamdan uygulamaya erişerek oluşturulan projeye giriş yapabilir. Proje açıldığında eğer yapılandırma gerçekleştirilmiş ise bir kullanıcı girdisi ile giriş yapması gerekir. Hazırlanan çözümde kullanıcı girdisi olarak araç plakası belirlenmiştir. Proje oluştururken araç plakası gibi kullanıcı girdilerini kolaylıkla oluşturabilir ve girdi maskesi yapılandırabilirsiniz. Örneğin, telefon numarası veya kimlik numarası gibi kullanıcı girdileri için şablonlar belirlenebilir. Böylece yanlış girişler önlenebilir.

Giriş yapıldıktan sonra ürünlerin bulunduğu büyük butonlar açılır. Butonların büyüklükleri, renkleri veya grupları yapılandırılabilir. Ayrıca butonlara görseller eklenerek hızlı veri girişi için kolaylık sağlanabilir.

Veri girişi yapıldıkça tıklama sayısına göre ürün miktarları, ürünlerin ismi ile birlikte veri girişinin yapıldığı konuma tanımlanır ve haritadan konum seçildiğinde girilen ürünlerin isim ve miktarları görüntülenebilir. Hatalı bir veri girişi olduysa buradan hızlı bir şekilde silme işlemi de gerçekleştirilebilir.

Gıda dağıtımı için hazırlanan tüm çözümler birbiri ile entegre bir şekilde çalışmaktadır. Kullanıcılar faklı konumlardan ve farklı platformlardan eş zamanlı olarak bilgilere erişebilir. Böylece durumsal farkındalık ve karar desteği sağlanmış olur.

 

ArcGIS uygulamaları ve güncellemeleriyle ilgili daha fazla bilgiye ulaşmak için blog sayfamızı takip edebilirsiniz.

 Esri Türkiye 2020