SQLKolay – Android

SQLite pek çok mobil işletim sisteminde de kullanılan gömülü ilişkisel veritabanıdır. Android platformu da standart olarak desteklemektedir. Alternatif olarak Realm, UnQlite, Snappy DB gibi çözümler de mevcuttur. Buna karşın geliştirdiğim Android projelerde Sqlite ‘ı tercih ettiğimi belirtmeliyim.

Android üzerinde Sqlite kullanırken temel olarak SQLiteOpenHelper sınıfından türetilen sınıf kullanılabilir. Fakat proje büyüdükçe, birden fazla tabloyla çalışılmaya başlandığında işlerin çığırından çıktığını göreceksiniz. Bu noktada ORM kütüphaneleri devreye girerek geliştiriciyi veritabanı ile cebelleşmekten kurtarmaktadır. Başlıca olarak Room, greenDAO, ORMLite, SugarORM, ActiveAndroid şuan popüler olan kütüphanelerdir.

ORM kütüphanelerinin geliştiriciye kolaylık sağladığına katılıyorum fakat bazı noktalarda da sadelikten uzaklaştırdığını da belirtmeliyim. İncelediğim ORM araçlarından sonra bir haftasonu projesi olarak SQLkolay kütüphanesini geliştirdim. Kütüphane kullanıcıya belirli bir tasarım örüntüsü sunduğu için büyüyen projelerde kargaşayı engelleyeceğini düşünüyorum. Ayrıca geliştiriciyi SQL den çok uzaklaştırmadığı için performansı da olumsuz yönde etkilemeyecektir.

Projeye https://github.com/MSBilgin/SQLkolay adresinden erişebilirsiniz.

Continue reading

Speed Up WMS Layers in OpenLayers 3

While working with multiple WMS layers in web map applications, its normal to have poor peformance. Because the app requests data instantly and map server takes requested data  from DB than renders it and repeat this tiring process for every single tile. Finally client (web app) renders these tiles due to the sequence. General solution to this problem is GeoWebCache. It takes all layer data from DB and renders before web app request. So everything is ready except client-side rendering. But there are bad news for GeoWebCache: you can not wotk with live data. If you have to work with live data you have to use WMS without GeoWebCache. By the way you should think optimization about client-side. In this article I mention about how to speed up OpenLayers 3 WMS layers that come from GeoServer.

Continue reading

OpenLayers 3’te WMS Katmanlarının Hızlandırılması

Web uygulamalarında birden fazla WMS katmanı ile çalışırken performans düşüklüğü yaşamanız olasıdır. Bunun sebebi katmanlara ait verilerin anlık olarak veritabanından çekilmesi ardından render edilmesi ve bunu her tile için yapılması üstüne bunların istemci tarafında sıralı olarak gösterilmeye çalışılmasıdır. Bunun önüne geçmek için katmanın cache lenmesi (GeoWebCache) bir seçenek olarak karşımıza çıkabilir. Böylece veri önceden çekilmiş, render edilmiş sadece istemci tarafında gösterilmesi kalmıştır. Fakat bu durumda canlı veri ile çalışma imkanınız ortadan kalkar. Eğer canlı veri ile çalışmanız zorunlu ise WMS kullanmalı dolayısıyla istemci tarafından optimizasyona gitmeniz gerekir. Bu yazımda OpenLayers 3 ‘te GeoServer’dan gelen birden fazla WMS katmanını nasıl daha performanslı olarak kullanabileceğinden bahsedeceğim.

Continue reading

Speedy Layer Kullanımı

You can also read this page in English

Konumsal analizler gerçekleştirirken gerçek veriler ile çalışmadan önce test verileri ile çalışmak çeşitli durumlarda elimizdeki verinin güvenliği açısından daha iyi olabilmektedir. Bilhassa verinin değiştirilmesinin söz konusu olduğu durumlarda yedeğini alıp bunun üzerinde çalışmaya gidilmektedir. Bu işlem genellikle asıl verinin bir kısmının veya tamamının kopyası alınarak yapılmaktadır. Hele ki verinin büyük olduğu durumlarda veya birden çok işlem adımının olduğu durumlarda kopyalanan verinin hacmi de artmaktadır. Ayrıca bu işlemin kendisi de başlı başlına bir süreç haline gelmektedir. Ve onlarca kopya dosya ortaya çıkmaktadır. Test işlemi bittikten sonra artık bu veriler gereksiz olacağı için bir de temizlenmesi gerekmektedir.

Yularıda bahsettiğim süreci konumsal veri ile çalışan biri olarak sık olmasa bile arada sırada yaşamaktayım. Ve bu yorucu süreci kolaylaştırmak için veriyi RAM de kopyalayıp onun üzerinde test yapmaya karar verdim. Bunun için Speedy Layer eklentisini geliştirdim. Bu eklenti ile QGIS ortamında bir katmanı Memory Layer (RAM de tutulan katman) haline getirerek onun üzerinde istediğiniz değişiklikleri yapabilirsiniz. Böylece verinin aslına dokunmadan çalışabilirsiniz. En iyi özelliklerinde biri de RAM ‘deki veri ile kat kat daha hızlı çalışabilir, render alabilirsiniz. Continue reading

Speedy Layer Usage

While performing spatial analysis, its better to work firstly with test data in some cases like corruption of original data. Taking backup of original data and than working with test data is safer. This is usually done by taking a copy of all or a portion of the original data. In cases like multiple analysis steps or huge data, the volume of copied data is getting bigger. So preparing test data becomes an individual process. After all, dozen of copy files are generated. Also these files will be unneccessary after testing so they must be cleaned.

I experience sometimes the process mentioned above as someone who works with spatial data. I decided to make this process easier by copying data to RAM. And I have developed Speedy Layer plugin. By using this QGIS plugin you can transform a vector layer to Memory Layer (stored in RAM) and play on it. So you can perform tests without touching original data. One of the best feature is speed. Memory Layers are faster in analysis and rendering because they stored in RAM. Continue reading

Feature Loader Kullanımı

This page also available in English

Konumsal veritabanları ile çalışanlar için ellerindeki verilerin (sahadan gelen, analizlerden üretilen vs.) aktarımı işlemi bazı durumlarda oldukça zahmetli olmaktadır. Daha çok verinin yapısı (öznitelikler, koordinat sistemi vs.) ile veritabanındaki tablonun yapısı arasındaki farklar nedeniyle çeşitli dönüşümlerin yapılması gerekli olmaktadır. Bu konu hakkında daha önceden yazmış olduğum GeoKettle: Açık Kaynaklı Konumsal ETL Aracı yazımda kısmen bahsetmiştim.

Yukarıda bahsettiğim gibi elimdeki verileri Oracle Spatial ‘e aktarmam gereken bir işle karşılaştım. QGIS kullanarak bu işlemi gerçekleştirmeyi Copy Features (CTRL + C) ve Paste Features (CTRL + V) ile denedim fakat başarılı olamadım. Çünkü öznitelik yapıları birbirleri ile uyuşmuyordu. Bunun üzerine MapInfo ‘nun Easy Loader aracı ile bu işlemi gerçekleştirdim. QGIS ‘in böyle bir aracı olmamasını görünce hemen kolları sıvadım. Feature Loader adlı eklentiyi geliştirdim. Bu eklenti ile QGIS ortamındaki bir katmandaki verileri diğer bir katmana kolaylıkla aktarabiliyorsunuz. En önemli özellikleri arasında uygun öznitelikleri kendi tespit ediyor olması ve QGIS ‘in desteklediği tüm formatlar (Oracle, Postgis, Spatialite, SHP, TAB etc…) ile çalışabilmedir. Continue reading

Feature Loader Usage

While working with spatial databases loading data from another datasources could be problematic. Mostly SRID difference and attribute (field) mismatch need transformation before starting loading operation. I have wrote another post GeoKettle: Açık Kaynaklı Konumsal ETL Aracı about this subject.

As mentioned above, a few days ago i need to load some GIS data to Oracle Spatial. I have tried with QGIS by Copy Features (CTRL + C) and Paste Features (CTRL + V) but not succeed. Because attribute fields were not matched. So I tried with MapInfo’s Easy Loader tool and made it done.  So I rolled up sleeves to make this operation done in QGIS. And I have developed Feature Loader. This plugin lets you load spatial data from one layer to another one by simple three click. It matches fields automatically and support all formats that QGIS support (Oracle, Postgis, Spatialite, SHP, TAB etc…). Continue reading