Spatial Reference System

26 May

Spatial Reference System

Spatial Reference System (SRS) veya Coordinate Reference System(CRS) coğrafi nesnelerin konumlarını bulmak için kullanılan koordinat tabanlı yerel, bölgesel veya küresel bir sistemdir. Bir SRS farklı mekansal referans sistemeler arasında dönüşümlerin yanı sıra, belli bir harita projeksiyonu tanımlar. Bazı koordinat sistemleri:

  • Universal Transverse Mercator koordinat sistemi
  • Birtish national grid reference system
  • Hellenic Geodetic Reference system 1987
  • Lambert conformal conic projection
  • United States National Grid
  • Jordan Transverse Mercator
  • International mapcode system
  • Irish grid reference system

Mekansal referans sistemleri SRID olarak ifade edilen benzersiz tamsayı kimlik numaraları ile ifade edilirler. European Petroleum Survey Group(EPSG) tarafından tanımlanmış olan SRID’ler de vardır ve bunlar EPSG kodu ile ifade edilirler. Örneğin “EPSG:4326” WGS84 projeksiyonu için EPSG kodudur. “EPSG:3857” ise WGS84 WebMercator için EPSG kodudur. Bu iki projeksiyon arasındaki fark “EPSG:4326” sisteminde dünya bir küre olarak ele alınırken “EPSG:3857” sisteminde dünya bir elips olarak düşünür. “EPSG:4326” enlem/boylam(lon/lat) koordinat sistemini kullanırken “EPSG:3857” x/y kartezyen koordinat sistemini kullanır. Bu sistemler sayesinde de yuvarlak yapıdaki dünya düz bir zemin üzerinde temsil edilebilmektedir.

SRS için tanımlanan bilgiler veritabanlarında OCG tarafından tanımlanan spatial_ref_sys metadata tablosunda tutulur. Bu tabloda SRID, AUTH_NAME, AUTH_SRID, SRTEXT gibi değerler bulunur. Konumsal veritabanı içinde birden fazla konumsal referansa sahip konumsal nesne tablosu veya raster veri bulunabilir.

Mekansal referans sistemleri (SRS) Open Geospatial Consortium (CRS) tarafından kolay bir şekilde erişim sağlamak amacıyla belli standartlarda herkesin anlayabileceği bir metin standardında tanımlanırlar. Bu standart Well Known Text(WKT) olarak isimlendirilir.

Well Known Text(WKT)

WKT bir harita üzerinde vektör geometri nesnesini temsil etmek için ve mekansal referans sistemleri arasında dönüşümler yapabilmek için geliştirlmiş bir metinsel işaretleme dilidir. WKT’nin binary karşılığı Well Known Binary (WKB)’dir. WKB ile WKT ile tanımlanan bilgilerin transferi ve veri tabanlarında saklanması için kullanılır. Bu formatlar OGC tarafından ISO/IEC 13249-3:2011 standardı olarak tanımlanmıştır.

WKT ile temsil edilen 18 adet geometri türü vardır. Bunlar:

  • Geometry
  • Point, Multipoint
  • LineString, MultiLineString
  • Polygon, MultiPoygon, Triangle
  • CircularString
  • Curve, MultiCurve, CompundCurve
  • CurvePolygon
  • Surface, MultiSurface, PolyhedralSurface
  • TIN, TINZ
  • GeometryCollection

Geometri koordinatları 2D (x,y), 3D (x,y,z), 4D (x,y,z,m) şeklinde temsil edilir.

Örnek WKT geometri gösterimleri:

  • POINT(25 18)
  • LINESTRING(10 15, 20 25, 50 55)
  • POLYGON((20 25, 50 55, 80 95, 20 25))
  • POLYGON((20 25, 50 55, 80 95, 20 25), (10 15, 18 22, 17 23, 10 15))
  • MULTIPOINT((11 12), (24 60), (40 40), (75 80))
  • MULTIPOINT(11 12, 24 60, 40 40, 75 80)
  • MULTILINESTRIN((15 15, 23 80, 10 40), (16 16, 33 10, 25 50, 38 09))

Well Known Binary(WKB)

Geometri nesnelerini taşınabilir ve veritabanlarında depolanabilir hale getirmek amacıyla bitişik byte dizisi şeklinde temsil eden ve OGC tarafından standartlaştırılan bir gösterim şeklidir. İki boyutlu(2D) geometrileri temsil eden bir kodlama şeklidir. WKB gösterimleri genellikle onaltılık sayı sistemindeki dizelerle yapılmaktadır.

SQL veritabanında WKB şeklinde depolanan geometrilere ODBC Client gibi veri sağlayıcılar aracılığı ile erişilebilmektedir. Konumsal veri üzerinde geometrik işlemleri gerçekleştirebilen fonksiyonlar SQL, Java veya C-API tarafından sağlanmaktadır.

Bir geometri için yapılan WKB gösterimi yapılırken, öncelikle geometri nesnesinin serileştirilmesiyle elede edilen sayı kümesinden alınan  işaretsiz tamsayı (Unsigned Integer) ve ondalık(Double) sayılar elde edilir. Daha sonra elde edilen her sayı, standart ikili(binary) sayı sistemine dönüştürülür.

Binary ifadelerin bilgisayar sisteminde serileştirilmesi sırasında işaret bitleri, en önemli ilk byte veya en az önemli ilk byte gibi bazı standartlar belirlenmiştir. Serileştirme işlemi, network ortamında bilgisayarlar arasında veri transferini gerçekleştirebilmek amacıyla gerçekleştirilir. Serileştirme için kullanılan iki tür kodlama vardır. Bunlar XDR ve NDR dir.

XDR (big-endian)

  • İşaretsiz tamsayının XDR gösterimin en önemli byte önce yazılır.

xdr1

  • Ondalik(Double) sayıların XDR gösteriminde işaret byte önce yazılır.

xdr2

NDR (little-endian)

  • İşaretsiz tamsayının NDR gösterimin en önemsiz byte önce yazılır.
  • Ondalik(Double) sayıların NDR gösteriminde işaret byte sona yazılır.

Geometri Nesnelerinin WKB Gösterimi

Geometri gösteriminde ilk byte veri için byte sırasını gösterir.

  • 00: Düşük son haneli (big endian)
  • 01: Büyük son haneli (little endian)

İkinci byte geometri türünü temsil eden bir tamsayıdır.

Type

2D

GEOMETRY

0000

POINT

0001

LINESTRING

0002

POLYGON

0003

MULTYPOINT

0004

MULTULINESTRING

0005

MULTIPOLYGON

0006

GEOMETRYCOLLECTION 0007
CIRCULARSTRING 0008
COMPUNDCURVE 0009
CURVEPOLYGON 0010
MULTICURVE 0011
MULTISURFACE 0012
CURVE 0013
SURFACE 0014
POLYHEDRALSURFACE 0015
TIN 0016
TRIANGLE 0017

 

Her geometrik veri türü benzersiz bir veri yapısına sahiptir. Koordinatlar double tipinde temsil edilir.

Örneğin: POINT(2.0, 4.0) geometrisi 000000000140000000000000004010000000000000 şeklinde 21 byte ile temsil edilir. Burada:

  • 1 byte integer 00 veya 0: Düşük son haneli
  • 4 byte integer 00000001 veya 1: POINT 2D
  • 8 byte float 4000000000000000 veya 2.0: X koordinatı
  • 8 byte float 4010000000000000 veya 4.0: y koordinatı

Kaynaklar:

Konumsal Veritabanlarına Özel SRID Eklemek

4 Haz

Mekansal veri depolayabilen veri tabanlarında SRID değerlerini listelemeyi ve herhangi bir tabloya ait geometri alanının SRID değerini güncellemeyi bir önceki yazımızda incelemiştik.

Oracle, PostGIS ve MsSQL gibi sık kullanılan veritabanlarında varsayılan olarak gelen bir çok SRID değeri mevcuttur. Bu SRID değerleri dünyada çok bilinen referans sistemlerine aittir. Ancak bazı ülkeler bu referans sistemleri yerine kendi özel referans sistemlerini kullanmayı tercih etmektedirler. Dolayısıyla bu özel referans sistemleri Çok bilinen SRID listesine dahil olmayabilir. Bu gibi durumlarda özel mekansal referansları veritabanlarına kendimiz eklemek durumunda kalırız.

Spatial Reference sitesi üzerinde aradığımız referansları bulabilmek mümkündür. Bu yazıda ki örnekte ülkemizde kullanılan IRTF96 koordinat sisteminin PostGIS veritabanına nasıl tanımlandığını inceliyor olacağız. Buradan ITRF96 projeksiyona ait bilgilere ulaşabilmek mümkündür.

PostGIS veritabanına ITRF96 koordinat sistemini tanıtabilmek için aşağıdaki SQL komutunu kullanmak yeterli olacaktır.


insert into spatial_ref_sys (srid, auth_name, auth_srid, proj4text, srtext)
values ( 97835,
        'sr-org',
        7835,
        '+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ',
        'PROJCS["ITRF96 / TM27",
          GEOGCS["GCS_ITRF_1996",
          DATUM["D_ITRF_1996",
                 SPHEROID["GRS_1980",6378137.0,298.257222101]],
                 PRIMEM["Greenwich",0.0],
                 UNIT["Degree",0.017453292519943295]],
                 PROJECTION["Transverse_Mercator"],
                 PARAMETER["central_meridian",27.0],
                 PARAMETER["latitude_of_origin",0.0],
                 PARAMETER["scale_factor",1.0],
                 PARAMETER["false_easting",500000.0],
                 PARAMETER["false_northing",0.0],UNIT["m",1.0]]');

Artık bu SRID değerini veritabanındaki tablolarımızın geometri alanlarına uygulayabiliriz.

Konumsal Veritabanı Tablolarında SRID Düzenlemesi

1 Haz

Coğrafi bilgi sistemleri uygulamalarında veritabanı içerisinde tutulan veriler, metinsel boyutunun yanında coğrafi boyutu yönünden de ele alınmaktadır. Coğrafi veya konumsal veya mekansal olarak adlandırılan verileri depolamak bu verilerin bazı özelliklerini bilmeyi ve kullanabilmeyi gerektirmektedir.

Bu yazıda coğrafi verilerin SRID özelliğini konu edinmiş olacağız. SRID açılımı “Spatial Reference System Identifier” ve Türkçe meali “Mekansal Referans Sistem Tanımlayıcısı” olan bir kavramdır. SRID coğrafi veri tutan tablolardaki geometri alanlarına ait projeksiyon sistemlerini belirtmek için kullanılan sayısal bir kimlik numarasıdır.

Bu yazıdaki örnek uygulamalar piyasada şu anda kullanılan popüler veritabanlarından Oracle, Postgresql veya MsSQL tabloları üzerinde bulunan geometri sütunlarının SRID özelliklerini belirlemek şeklinde olacaktır.

Bir veritabanında bulunan SRID listesini görebilmek için farklı veritabanlarına göre aşağıdaki komutlar kullanılmaktadır.

Oracle

SELECT * FROM sdo_coord_ref_sys

PostGIS

SELECT * FROM spatial_ref_sys

MsSql

SELECT * FROM spatial_reference_systems
SRID Listesi
SRID Listesi

Bir veritabanı tablosundaki geometri alanının SRID değerini değiştirmek için aşağıdaki komutlar kullanılmaktadır. Aşağıdaki örnekte tablo adı “roads” ve geometri alanının adı “geom” şeklinde düzenlenmiştir.

Oracle

UPDATE roads T
SET T.geom.SDO_SRID = 4326
WHERE T.geom IS NOT NULL

PostGIS

SELECT UpdateGeometrySRID('roads','geom',4326);

MsSQL

UPDATE dbo.roads SET geom.STSrid = 4326;

Artık “roads” tablosunun “geom” alanı için SRID değeri 4326 olarak düzenlenmiş oldu. SRID değeri düzenlenmemiş olan tablolar için varsayılan değer boş veya sıfır olacaktır. Bu durumda verilerin kullanılması için her defasında dönüşüm yapmak zorunda kalabiliriz. Verilerimizi Google, Bing veya Yandex gibi haritalarda kullanmayı planladıysak bu haritaların SRID değerlerini bilmemiz ve geometri alanlarımızı bu değer ile güncellemeliyiz.

Bir sonraki yazıda görüşmek dileğiyle.

Coğrafi Bilgi Sistemleri Uygulaması – Geoserver

16 Ağu

geoserver-logo

GeoServer, coğrafi verilerin dış dünyaya sunulması için hazırlanmış açık kaynak kodlu bir java uygulamasıdır. GeoServer ile coğrafi verileri işlemek, paylaşmak ve düzenlemek mümkündür. GeoServer ile paylaşılan verileri Google Earth gibi masaüstü uygulamalarda kullanmak mümkün olduğu gibi Open Layers, Google Maps ve Bing Maps gibi
web tabanlı haritalara da kullanmak mümkündür.

GeoServer uygulaması, OGC(Open Geospatial Consortium) uyumlu olup OGC standartlarında Web Map Service(WMS), Web Feature Service(WFS) ve Web Coverage Service(WCG) gibi hizmetleri sunabilmektedir. Bu sayede platform bağımsızlığı sağlanıp farklı uygulamaların birbiri ile konuşması mümkün hale gelmektedir.

GeoServer, birçok coğrafi veri kaynağı ile uyumlu çalışabilecek şekilde tasarlanmıştır. Örneğin:

  • PostGIS
  • Oracle Spatial
  • ArcSDE
  • DB2
  • MySQL
  • Shapefiles
  • GeoTIFF
  • ECW

Geoserver ile birçok standartta veriler üretmek de mümkündür. Örneğin:

  • KML
  • GML
  • GeoRSS
  • PDF
  • GeoJSON
  • JPEG
  • GIF
  • SVG
  • PNG

Yukarıda bahsettiğimiz bileşenlerin düzgün işleyen bir iş kuralına göre konumlandırılması gerekmektedir. Üretilen coğrafi verileri depolanmasından, bir uygulamada vücut bulmasına kadar ilerleyen bir dizi adım söz konusudur. Peki o halde Geoserver bu sistemin neresinde durur?

Geoserver Uygulama Mimarisi
Geoserver Uygulama Mimarisi

Şemada ifade edildiği üzere Geoserver, veri kaynağı ile uygulama arasında konumlanmış bulunuyor. Tabi arada bir de GeoWebCache denilen sistem iyileştirme eklentisi bulunmaktadır.

Coğrafi veri kaynağına herhangi bir CBS(Coğrafi Bilgi Sistemleri) Masaüstü uygulaması ile erişmek mümkündür. Bu uygulama açaık kaynak kodlu QGGIS olabileceği gibi ticari ürünlerden ArcGIS v.s de olabilmektedir. Masaüstü uygulamaları kullanılırken Geoserver kullanmamıza gerek yoktur.

Web tabanlı harita uygulamalarında verilerimizi kullanmak için piyasada bulunan açık kaynak veya ticari uygulamalardan faydalanabiliriz. Örneğin OpenLayers, Esri API, Google Maps, Bing Maps gibi haritalar üzerinde coğrafi verilerimizi kullanabilmekteyiz.

Geoserver WMS Yayını ve OpenLayers
Geoserver WMS Yayını ve OpenLayers

 Nerelerde Kullanılır?

Geoserver uygulamasını coğrafi veri depolama ve bu veriyi paylaşma ihtiyacı olan şirketler veya kamu kurumları kullanabilir. Ülkemizde en yoğun kullanım alanları olarak bazı bakanlıklar, belediyeleri ve altyapı kurumlarını görmekteyiz. Belediyelerde imar, yol, numarataj ve adres bilgisi gibi birçok coğrafi veri depolanmaktadır. Altyapı kurumlarında da tüm altyapı bilgisi koordinatlı bir şekilde saklanmakta ve sunulmaktadır.

(CBS)Coğrafi Bilgi Sistemleri’nde Geoserver’ın Yeri

Dünyada ve ülkemizde hızla yaygınlaşan Coğrafi Bilgi Sistemlerine karşı ilgi giderek artmaktadır. Üniversitelerde bu konu üzerine önlisans, lisans ve yüksek lisans programları açılmaktadır. CBS uygulamalarının yaygınlaşmasıyla ürün kullanım ihtiyacı da belli bir maliyeti beraberinde getirmektedir. Ticari ürünleri satın alma gücü olmayan kurum ve şirketler doğal olarak açık kaynak kodlu Geoderver veya benzeri ürünlere yönelmektedir. Geoserver bu nedenle azımsanmayacak oranda bir kullanıcıya sahiptir.

 Özet

Eğer coğrafi verilerinizi para harcamadan OGC standartlarında dış dünya ile paylaşmak istiyorsanız Geoserver sizin için çok pratik bir çözüm olacaktır.

ESRI Arcgis Javascript API with Knockout JS MVVM

4 Nis

Yazıya başlamadan önce, yazının başlığında belirtilen kavramları daha önce duymamış olanlar için kısaca açıklamaya çalışayım. Arcgis Javascript API, ESRI firmasının harita tabanlı javascript uygulamaları geliştirmek için sunduğu bir araçtır. Knockout JS ise javascript tarafında MVVM(Model-View-View Model ) tasarım deseninin uygulanabilmesini sağlayan bir kütüphanedir.

Knockout Js Model
Knockout Js Model

Kısaca söylemek gerekirse Javascript kodu ile HTML kodunun arasında aktarım yapabilen, iki taraf arasında köprü vazifesi gören bir kütüphanedir.

Bu yazının konusu, Arcgis Javascript API ve Knockout JS kütüphanesinin bir arada kullanıldığı bir harita uygulamasını göstermektir. GitHub hesabımda oluşturduğum esri-knockout-mvvm repository içerisinde uygulama kodlarını bulabilirsiniz.

Neden Arcgis JS API ile birlikte Knockout JS kullanma ihtiyacı duydum?

Arcgis Javascript API ile uyglamalar geliştirirken Javascript kodu içerisinde HTML elemanlarının kullanılması noktasına takıldım. Örneğin bir butona tıkladığımızda, butonun olay yakalayıcı metodunda bir HTML tablosunu oluşturur ve sayfanın bir yerine yerleştirir. Burada farklı konuların birbirinden ayrılması (Separation of Concerns) prensibini Javascript programlama dilinde ihlal etmiş oluyoruz. Oysa programlama prensipleri genel kavramlar olup uygulama alanına göre değişmez. Bu sebepten dolayı Knockout JS kullanarak HTML ve Javascript kodunu birbiriden ayırdım.

Uygulama Araç Kutusu:

  • Arcgis Javascript API
  • Knockout JS
  • Bootstrap
  • JQuery
  • Dojo

Uygulama Özeti:

Uygulama, harita üzerindeki bir noktaya tıklandığında, tıklanan yerin yakınlarındaki sosyal aktiviteleri, olayları göstermektedir. Bu bilgileri seatgeek.com API üzerinden çekmektedir.

Uygulamanın çalışan halini buradan inceleyebilrsiniz.

Uygulama Görseli
Uygulama Görseli

ArcGIS Map Server verileri ile Google Chart çizdirilmesi

22 Tem

Bir önceki yazıda ASP.NET Web API ile  tarafından servis edilen JSON verileri ile Google grafiklerinin çizimini yapmıştık. Bu yazıda da yine Google grafik çizimi üzerinde duracağız. Grafik çizimi için kullanacağımız veri ise uzak bir sunucu üzerinde elde edilecek. Uzak sunucu verileri ise ArcGIS firmasının sunmuş olduğu örnek REST servislerinden elde edilecek.

ArcGIS firmasının sunduğu örnek servislere buradan ulaşmak mümkündür. Biz bu servislerden nüfus ile alakalı olan demografik yapı servislerini kullanacağız. Demografik yapıya ait şu anda üç farklı MapServer hizmeti açılmış durumda. Biz bunlardan Demographics/ESRI_Census_USA servisi tarafından sunulan verilerle çalışacağız. USA’de bölgeler ya da eyaletler(states) adı altında sunulan Feature Layer üzerinden bir istatistik alarak örnek bir grafik çizdirmeye çalışalım. Bu örnek istatistiğimiz “2007 yılında nüfusu 9 milyondan büyük olan bölgelerin listesi.” şeklinde olsun.

Örnek uygulamamız, sunucu üzerinde çalışan tek bir HTML dosyası da olabilir, bir ASP.NET uygulaması üzerinden de çalışabiliriz. Yapacağımız şey ArcGIS Server sunucusuna bir sorgu gönderip gelen veriyi işlemek.

Feature Layer Servisi: http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/5

Bu servise bir sorgu gönderdiğimizde gelen verinin JSON şekli aşağıdaki gibidir.

Arcgis Query Result
Arcgis Query Result

Bize grafik çizimi için gerekli olan kısım, kırmızı çerçeve içerisine alınmış features dizisidir. Bu dizi içerisinde her bir attribute, nüfus(POP2007) ve bölge adı(STATE_NAME) bilgileri bulunmaktadır. Bu bilgiler ışığında sorgulama ve çizim işlemlerini javascript ortamında aşağıdaki gibi gerçekleştirebiliriz.

<script type='text/javascript' src='https://www.google.com/jsapi'></script>
<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js'></script>
<script type="text/javascript">

function getMap() {

   var mapserverUrl = "http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/5/query";
   var parameters = { f: "json", where: "POP2007 > 9000000", returnGeometry: false, outFields: "POP2007,STATE_NAME" };

   $.ajax({
          url: mapserverUrl,
          data: parameters,
          dataType: "jsonp",
          jsonpCallback: "callback",
          success: function (response) {
             createGraphics(response.features);
          }
   });
 }

function createGraphics(data) {

    var table = new google.visualization.DataTable();
    table.addColumn('string', 'STATE');
    table.addColumn('number', '2007 POP');

    for (var i = 0; i < data.length; i++)
        table.addRow([data[i].attributes.STATE_NAME, data[i].attributes.POP2007]);

    var options = { title: 'Population of 2007 in the USA, Bigger than 9 Million' };
    var chart = new google.visualization.ColumnChart(document.getElementById('cbs'));
    chart.draw(table, options);
 }

 google.load("visualization", "1", { packages: ["corechart"] });
 google.setOnLoadCallback(getMap);

</script>

Yaptığımız sorgu standart bir ajax sorgusudur. parameters olarak belirlenen veri kümesi servis URL’i için queryString verilerini barındırmaktadır. Gerisi zaten Google grafik API işlemleri Bu örnek uygulamanın çıktısı aşağıdaki şekilde olacaktır.

Arcgis ve Google Chart
Arcgis ve Google Chart

ArcGIS Server Sitesi Yapısı Verisyon 10.1

5 Haz

Günümüzde son kullanıcı ürünleri ucuzlamaya başladıkça sunucu taraflı uygulamalar ve teknolojilerin fiyatları artmaya başladı. Sunucu gelişiminin son noktası bulut teknolojisi oldu. Bulut teknolojisinin iyice yaygınlaşmaya başladığı günümüzde firmalar sunucu mimarilerini bu gelişime uydurmak adına adımlar atılmaya başlandı. Artık sunucu tarafında çalışan sistemleri durdurmadan donanımsal tak çıkar işlemleri yapmak yani donanımların yetmediği noktalarda ölçekleme yapmak çok kolaylaştı. ArcGIS tarafı da bu gelişim karşısında duyarsız kalmayarak mimarisinde bazı değişikliklere gitti.

Bu yazımızda ArcGIS Server 10.1 ile birlikte SOM-SOC modeli yerine gelen Site yapısının iç yüzünü inceleyeceğiz. ArcGIS Server Site yapısı, birden fazla bilgisayar üzerine konuşlandırılabilecek şekilde ayarlanabilen bileşenlerden oluşur. Sitedeki her bir bileşen kaynak yönetiminde belirli bir role sahiptir.

ArcGIS Server sitesi bileşenleri şu şekilde özetlenebilir:

  • Web sunucusu: Web uygulamalarını barındırır, isteğe bağlı güvenlik seçenekleri sunar ve ArcGIS Server için yük dengeleme işlemlerini gerçekleştirir.
  • Web Adaptör: Gelen istekleri farklı CBS sunucu(GIS Server) bilgisayarlarına ileterek ArcGIS Server ile kurumsal web sunucunuzu bütünleştirir.
  • GIS Server(CBS sunucusu): CBS web hizmetleri için gelen istekleri karşılamak için çalışır. Bir CBS sunucusu harita çizimleri, görüntü hizmetleri, veritabanı senkronizasyonu, veri arama gibi birçok işlemi gerçekleştirir.
ArcGIS Server Site Mimarisi
ArcGIS Server Site Mimarisi

Bu resimde özetle ArcGIS Server sitesinin her bir bileşenin görevi ve bağlı olduğu bileşen gösterilmiştir.

Web Sunucusu (Server)

Web sunucusu web uygulamalarını barındırır, isteğe bağlı güvenlik seçenekleri sunar ve ArcGIS Server için yük dengeleme işlemlerini gerçekleştirir. ArcGIS  Server, IIS, WebSphere ve WebLogic gibi birçok web sunucusuyla uyumlu çalışır.

GIS server (CBS sunucusu) bileşeni servislerinizi HTTP protokolü üzerinden IIS gibi ayrı bir işlem gerektirmeden dışarı açabilir. Eğer web sunucusunun yerel güvenlik yapılandırmalarından(örneğin kullanıcı doğrulamasından)  faydalanmak isterseniz veya web uygulamalarınızı barındırmak isterseniz dağıtımınıza bir web sunucusu dahil edebilirsiniz.

Web Adaptor(Adaptör)

ArcGIS Web Adaptor, temelde web sunucunuzdan gelen istekleri CBS sunucularına(GIS Server) ileten bir web uygulamasıdır. Web Adaptörler siteye hangi bilgisayarların eklenip hangilerinin çıkarıldığını izler ve gelen trafiği bu bilgisayarlara uygun olarak dağıtır. Web Adaptör kullanarak siteniz için isimlendirme ve bağlantı(port) noktalarını yönetebilirsiniz. Örneğin varsayılan port 6080 ve site ismi “arcgis” iken Web Adaptör ile bunları değiştirebilirsiniz. Web Adaptörü sayesinde güvenlik için web sunucusunun yerel imkanlarını kullanabilir, ArcGIS Manager için veya ArcGIS Server yönetim dizinleri için dışarıdan gelen istekleri engelleyebilirsiniz.

Çalışma prensibi olarak bir servis isteği geldiğinde Web Adaptörü bu isteği GIS Server bilgisayarlarına iletir. Daha sonra GIS Server bilgisayarları, hangi bilgisayarın kullanılabilir olduğunu ve hangi bilgisayara işin atanacağı belirlemek için birbirleri ile iletişime geçerler. Eğer Web Adaptörü, GIS Server tarafının erişilemez durumda olduğunu belirlerse o sunucuya istek göndermeyi durdurur.

Web Adaptörü sitenizi sadece web ağ geçidi veya giriş noktası yapılandırmak için tek yöntem değildir. Diğer ağ geçidi teknolojileri de kullanılabilir. Fiziksel HTTP yük dengeleyiciler, ağ yönlendirici cihazları veya üçüncü parti bir yazılımla da bu işlemleri gerçekleştirmek mümkündür.

GIS Server (CBS sunucusu)

Sitenizde ArcGIS Server için kurulan bilgisayarları CBS sunucusu olarak düşünebilirsiniz. Haritalar, adresler, koordinatlar, coğrafi işlemler gibi web hizmetler için gelen istekler site içindeki ulaşılabilir durumdaki CBS sunucu bilgisayarına atanır. Daha sonra CBS sunucusu gelen isteğe uygun hizmeti hazırlayarak kullanıcıya cevap olarak gönderir. Aslında CBS sunucuları sitenizin iş merkezidir.

CBS sunucuları servisleri HTTP protokolü üzerinden dışarı sunarlar.

Birden fazla CBS sunucusu kullanarak sunuculardan birinin kesintiye uğradığı kriz durumlarında sitenizi kesintilere karşı koruyabilirsiniz. Bir CBS sunucusu devre dışı kaldığı durumda Web Adaptörü, gelen istekleri sitenizdeki diğer CBS sunucularına dağıtır. Bunlara ek olarak CBS sunucuları diğer CBS sunucularının eklenip çıkarıldığını algılayabilir. Böylece bulut teknolojisi gibi aygıt takılıp çıkarılabilen ortamlarda iyi çalışır.

Clients (Kullanıcılar)

ArcGIS Server sitesi kullanıcılarını şu şekilde isimlendirebiliriz.

  • Web Tarayıcılar: ArcGIS Server sitesi bünyesindeki servislere web tarayıcılar aracılığıyla ulaşmak mümkündür.
  • Mobile Aygıtlar: Akıllı telefonlar ve tabletler gibi taşınabilir aygıtlar ile web uygulamalarına ve web servislerine ulaşılabilir. Harita görüntüleme, yer bulma gibi uygulamalara rahatlıkla erişilebilmektedir.
  • ArcGIS Exploerer: ArcGIS Explorer görsel ve navigasyon için hazırlanmış ücretsiz bir masaüstü uygulamasıdır. ArcGIS Server servislerinizi veri olarak ekleyip zengin içerikli görüntü elde edebilirsiniz.
  • ArcGIS Desktop: ArcGIS Desktop uygulaması hem ArcGIS Server servislerini tüketebilir hem de yönetim aracı olarak kullanabilir. Bazı araçlar sayesinde sunucuya yayınlar sunmanız mümkündür. Bazı desktop uygulamalarını ArcMap, ArcCatalog, ArcGlobe, and ArcReader olarak sıralayabiliriz. Catalog ile uygun URL adresi ile CBS sunucularına bağlanabilirsiniz.
  • ArcGIS Engine: ArcGIS Engine uygulamaları CBS sunucularından faydalanır. ArcGIS Engine  geliştirircileri yazdıkları uygulamalar aracılığıyla CBS sunucularına veri gönderebilirler.

Kaynak: http://resources.arcgis.com/en/help/main/10.1/index.html#//0154000003p4000000

ArcGIS Server 10.1 Server Yenilikleri

4 Haz

Bir önceki blog paylaşımında ArcGIS Server 10.0 mimarisinden bahsetmiştim. Bu paylaşımın amacı ArcGIS Server 10.0 mimarisi ile 10.1 mimarisi arasındaki farkları görebilmekti. Bundan sonraki paylaşımlar 10.1 üzerinden ve çıkarsa daha yeni versiyonlar üzerinden devam edecektir. Bu yazımızda 10.1 versiyonunun getirdiği yenilikler üzerinden ilerleyeceğiz.

ArcGIS Server 10.1 verisyonu 64 bit bir uygulama olarak çalışır. Böylece CBS hizmetleri için donanım özelliklerinden tam olarak yararlanılır. Bu değişiklik, ArcGIS sunucularının ölçeklenebilirliğini arttırmak için yapılmıştır. 64 bit donanımlar artık mevcut endüstriyel standart haline geldiği göz önüne bulundurularak 32 bit işletim sistemlere verilen destek durdurulmuştur.

ArcGIS Server 10.1 Kurulum Yenilikleri

ArcGIS Server kurulumu önemli ölçüde basitleştirilmiştir. Önceki sürümlerde kurulum sırasında izlenen birçok adım kaldırılmıştır. Yeni özellikleri şu şekilde sıralayabiliriz.

  • Artık .Net Framework veya Java Runtime gibi yüklemelere gerek kalmıyor.
  • Ayrı bir sunucu (Microsoft IIS, WebSpahare, v.b) ile entegrasyona gerek kalmıyor. Artık sunucu için ArcGIS kurulumu yaptığınızda, web yönetim araçları ve uygulamalarıyla servis tabanlı bir CBS sunucusu(GIS Server) karşımıza çıkıyor.
  • CBS kaynaklarınıza ulaşmak için kurulum sırasında sizden tek bir kullanıcı hesabı istenir. Bu hesaba ArcGIS Server hesabı denir. 10.1 sürümünde kurulum sonrası adımlar ve ayrı ayrı ayarlanan SOM, SOC ve ArcGIS web servis hesapları yoktur.
  • DCOM bağımlılığı yoktur.

Birden fazla bilgisayar üzerine dağıtılmış kurulum yapmak basitleştirilmiştir. Her bilgisayarda aynı kurulumu yapılır, daha sonra ArcGIS Server Manager üzerinden bağlantılar gerçekleştirilir.

Windows ve Linux Ayrımı

Önceki versiyonlarda Microsoft .Net Framework ve Java platromu için sunulan ArcGIS Server, artık 10.1 versiyonuyla işletim sistemi seviyesine çekilmiştir. Kurulumlar Microsoft için ArcGIS(Server)  ve Linux için ArcGIS(Server) şeklinde yapılmaktadır.

ArcGIS Server 64 bit

ArcGIS 10.1 versiyonu 64 bit uygulama olarak çıkmıştır ve 32 bit işletim sistemi desteği durdurulmuştur.

SOM ve SOC modeli artık ArcGIS Server sitesi

Önceki ArcGIS Server versiyonlarında CBS sunucusu(GIS Server) SOM(Server Object Manager) ve SOC(Server Object Container) şeklinde iki bileşenden oluşmaktaydı. SOC bileşenleri GIS servislerinde barıdırılmaktadır ve SOM bileşeni tarafından yönetilir ve kullanıcıların hizmetine sunulur.

ArcGIS Server 10.1 ile birlikte SOM-SOC modeli ArcGIS Server sitesi şeklinde değiştirilmiştir. Bir site, bir veya birden fazla makine(GIS Server) üzerine yapılmış dağıtımdır. 10.1 ile gelen site mimarisi SOM-SOC modelinden daha sağlamdır. Hata riskini azaltır, yeni makinelerin eklenmesini ve mevcutların yönetimini kolaylaştırır.

ArcGIS Web Adaptör

ArcGIS Web Adaptor, ArcGIS Sunucusunun kendi web sunucunuz ile çalışması için yapılan bir kurulumdur. ArcGIS Server dış dünyaya REST ve SOAP servisleri sunabilmektedir. Eğer siteniz için kendi özel URL adreslerinizi ayarlamak istiyorsanız veya web sunucunuzun güvenlik modeli ile entegrasyon sağlamak istiyorsanız ArcGIS Web Adaptor kurulumunu yapmalısınız. Bu bileşen, eğer birden fazla makine ile bir siteyi yapılandıracaksanız ve güvenliği sıkılaştırmak istiyorsanız önerilir.

Kaynak: http://resources.arcgis.com/en/help/install-guides/arcgis-server/10.1/index.html#/What_s_new_in_the_ArcGIS_10_1_for_Server_install/01nm0000000m000000/

ArcGIS Server 10.0 Dağıtılmış Sistem Mimarisi

3 Haz

ArcGIS Server, sunduğu hizmetleri birden çok makine üzerine dağıtarak ölçeklenebilir bir sistem mimarisi sunmaktadır. ArcGIS sunucusunu ilk kez kuruyorsanız büyük olasılıkla tüm bileşenlerini aynı makine üzerine kurarak test edeceksiniz. ArcGIS Server uygulamanızı farklı makinelere dağıtmak istiyorsanız dağıtılmış kurulum(distributed installation) yapmalısınız. Bu sayede sisteminize erişen kullanıcı sayısı için kabul edilebilir bir düzeyde bir performans elde edebilirsiniz.

ArcGIS Server için yapılan dağıtılmış kurulum sayesinde sistem bileşenleri aynı yerel ağda birden fazla makine üzerinde barındırılır. Aşağıdaki grafikte ArcGIS Server bileşenlerinden SOM(Server object manager), SOC(server object container) ve Web sunucusunun farklı makineler üzerinde dağıtıldığını görebiliriz. Bu yapı Arcgis Server 10.0 için hazırlanmıştır. Daha sonraki versiyonlarda değişiklikler olabilir.

ArcGIS Server Mimarisi
ArcGIS Server 10.0 Mimarisi

Dağıtılmış şeklide kurulmuş olan ArcGIS Server sistemine daha fazla makine ekleyerek dışarı sunulan hizmeti daha da iyileştirmek mümkün hale gelmektedir. CBS (GIS) işlemlerinde yük çekici işlemler(container processes) CPU kaynağını çok fazla tükettiğinden sisteme birden fazla SOC makinesi dahil etmek bu yükün paylaşılmasını ve sistemin iyileştirilmesini sağlamaktadır.

ArcGIS Server bileşenlerini farklı makineler üzerinde akıllıca dağıtmak donanım kaynaklarınızın en etkin şekilde kullanılmasını sağlar. Örneğin kullanabileceğiniz makine sayısı yeterli değilse Web sunucusunu ve SOM bileşenini aynı makine üzerinde barındırabilirsiniz. Çünkü SOM, diğer bileşenlere nispeten daha az bellek kullanır.  Kalan donanım kaynakları da CBS sunucusunun işleyebileceği yükü dengelemek için SOC makinelerine aktarılabilirsiniz.

Dağıtılmış ArcGIS Server kurulumu yapmak, ArcGIS Desktop veya ArcGIS Engine kurulumuna benzemez. Çünkü birbiri ile konuşan makineleri doğru şekilde yapılandırmalısınız. SOM makinesinin sistemdeki bir SOC makinesine istekte bulunabilmesi gerekmektedir. Her makine aynı veri kümesi ve dizini ile çalıştığından her makine ortak bir isimlendirme kuralı (UNC path) ile aynı kayna erişmelidir.

Güvenlik mekanizmaları bazen makineler arasında iletişim sorunu çıkarabilir. Örneğin SOC hesabı farklı makineler üzerinde okuma ve yazma izinleri gerektirebilir. Bu sebeple ArcGIS Server bileşenleri arasında açık bir şeklide iletişim kurmaları gerektiğinden bu bileşenler arasında güvenlik duvarına gerek yoktur. Örneğin SOM ve SOC arasında veya SOM ve Web sunucusu arasında güvenlik duvarı gerekmez.
Ayarların Yapılması
Dağıtılmış bir ArcGIS Server sisteminin hizmete sunulması için atılacak ilk adım yapılandırma tasarımıdır. SOM, SOC, Web Application Developer Framewrok (ADF) ve Web Service endpoint bileşenleri aynı makineye yüklenebilir veya birden fazla makine üzerine dağıtılabilir. ADF Runtime Web sunucusu gibi aynı makinede yüklü olmalıdır.

ArcGIS Server Manager sunucunuzu yönetmenize yardımcı olan ve basit web uygulamaları oluşturmanızı sağlayan isteğe bağlı bir bileşendir. Bu bileşen iki parçadan oluşmaktadır. Bunlar Service Manager ve Application Manager olarak adlandırılır. Bu iki bileşen de aynı makine üzerinde veya farklı makineler üzerine dağıtılmış olabilir. Service Manager bileşeni Web servislerinin yüklü olduğu makinede servisleri oluşturmayı ve yönetmeyi sağlar. Application Manager bileşeni ise ADF yüklü makinedeki Web uygulamalarını oluşturmayı ve yönetmeyi sağlar.

GIS Servis kurulumu için buradan ve WEB Application kurulumu için de buradan bileşenlerin doğru yüklenmesine yardımcı olacak bilgiler verilmektedir.

Verileriniz CBS sunucusu (GIS Server) ile aynı yerel ağ üzerinde olmalıdır. Sunucunuzu Manager üzerinden yönetmiyorsanız ağınızda bir ArcGIS Desktop olmalıdır. Verilerinizin ve ArcGIS Desktop uygulamasının diğer CBS sunucu bileşenleri ile aynı makinede bulundurmamalısınız.

Kaynak: http://help.arcgis.com/en/arcgisserver/10.0/help/arcgis_server_dotnet_help/index.html#/Configuring_a_multiple_machine_deployment/0093000000m7000000/

Coğrafi Bilgi Sistemleri Yazılımı ve Uygulamaları

31 Tem

Bir önceki coğrafi bilgi sistemleri nedir başlıklı yazımızda, CBS konusu hakkında ön bilgi vermeye çalışmıştık. CBS uygulamalarının kullanım alanları ve amaçlarından bahsetmiştik. Bu yazımızda da CBS uygulamaları konusunda konuşacağız.

CBS uygulamalarının yazılım kısmı, önceden hazırlanan harita verilerinin WEB ortamında dış dünyaya sunulmasını gerçekleştirmektedir.

Yazılım geliştirme konusunda CBS uygulamalarında genellikle Silverlight, Java Flex, Javascript kullanılmaktadır.

Silverlight ortamında CBS yazılımı geliştirmiş biri olarak şunu söyleyebilirim ki, ESRI firmasının sunduğu Silverlight tool sayesinde işler kolay bir biçimde yürümektedir. Ancak CBS işi, bir programlama dilini öğrenmek kadar basit bir iş değildir. Sizden birçok bilgiyi birden istemektedir. Haritacılık, sistem, veritabanı gibi konuları da bilmenizi ister. Çünkü sorun anında nereye müdahale edileceğini söyleyebilmelisiniz. Bu açıdan gerçekten uzun soluklu bir öğrenim süreci varsır.

Yazılım konusunda tam anlamıyla serbestsiniz. Ancak benim tecrübelerim, Silverlight ve Java Flex tarafında kodlama gayet kolay ilerlemektedir. Ancak son zamanlarda alıştığım Test Driven Developmant geliştirme biçiminden sonra çokta haz veren bir kodlama yapısı yoktu benim için. Yani şelale tarzı kodlamaya devam.

CBS silverlight uygulamalarını buradan inceleyebilirsiniz.