Buat Anda di Kota Pekanbaru, silahkan download non geotagging PDF A3 referensi Nomor Lembar Peta (NLP) yang mengacu ke penomoran RBI dari Badan Informasi Geospasial. Peta dibuat skala 1:125ribu, artinya 1 cm di kertas A3 nantinya adalah 1,25km di dunia. Setelah Anda tahu kode 6 digit NLP ini, Anda dapat memesan peta tersebut ke BIG. Harap peta ini membantu, karena NLP itu sedikit membingungkan buat pemula.
Ceritanya, saya mendapatkan banyak sekali file *.TAB (dari MapInfo Table), 424 buah, dan sayangnya file tersebut pun ter-proyeksi ke kode UTM yang salah, yaitu UTM 47 Selatan, padahal, Pekanbaru berada pada UTM 47 Utara. Saya ingin mengubahnya menjadi ESRI Shape File (*.SHP) agar lebih mudah dibuka di QGIS dan maupun ArcGIS
Cara lama: buka di QGIS, lalu export satu-per-satu ke SHP dan jangan lupa di ubah CRS nya ke UTM Zona 47 Utara
Buka file *.TAB tersebut
terlihat CRS nya adalah EPSG:32747, yaitu UTM Zona 47 S
Klik kanan, lalu Export –> Save Features As …
Jangan lupa untuk mengganti CRS nya menjadi target kita. Karena Kota Pekanbaru berada di Zona 47 Utara, makanya EPSG nya adalah 32647
Simpan, dan ulangi untuk 424 buah file lainnya …. hehehehe
Cara Cepat: gunakan OGR2OGR
OGR2OGR berguna untuk mengconvert vector. Alhamdulillah, ogr2ogr sudah terinstall juga saat Anda menginstall QGIS,
Jalankan CMD, lalu eksekusi OSGeo4W.bat yang ada pada QGIS, untuk menggunakan perintah-perintah Open Source di CMD Anda.
-f format_name: output file format name, possible values are: -f “AmigoCloud” -f “BNA” -f “Carto” -f “Cloudant” -f “CouchDB” -f “CSV” -f “DB2ODBC” -f “DGN” -f “DXF” -f “ElasticSearch” -f “ESRI Shapefile” -f “Geoconcept” -f “GeoJSON” -f “GeoJSONSeq” -f “GeoRSS” -f “GFT” -f “GML” -f “GPKG” -f “GPSBabel” -f “GPSTrackMaker” -f “GPX” -f “Interlis 1” -f “Interlis 2” -f “JML” -f “KML” -f “LIBKML” -f “MapInfo File” -f “MBTiles” -f “Memory” -f “MSSQLSpatial” -f “MVT” -f “MySQL” -f “netCDF” -f “NGW” -f “OCI” -f “ODBC” -f “ODS” -f “OGR_GMT” -f “PCIDSK” -f “PDF” -f “PDS4” -f “PGDUMP” -f “PostgreSQL” -f “S57” -f “Selafin” -f “SQLite” -f “TIGER” -f “VDV” -f “WAsP” -f “XLSX” -append: Append to existing layer instead of creating new if it exists -overwrite: delete the output layer and recreate it empty -update: Open existing output datasource in update mode -progress: Display progress on terminal. Only works if input layers have the “fast feature count” capability -select field_list: Comma-delimited list of fields from input layer to copy to the new layer (defaults to all) -where restricted_where: Attribute query (like SQL WHERE) -wrapdateline: split geometries crossing the dateline meridian (long. = +/- 180deg) -datelineoffset: offset from dateline in degrees (default long. = +/- 10deg, geometries within 170deg to -170deg will be split) -sql statement: Execute given SQL statement and save result. -dialect value: select a dialect, usually OGRSQL to avoid native sql. -skipfailures: skip features or layers that fail to convert -gt n: group n features per transaction (default 20000). n can be set to unlimited -spat xmin ymin xmax ymax: spatial query extents -simplify tolerance: distance tolerance for simplification. -segmentize max_dist: maximum distance between 2 nodes. Used to create intermediate points -dsco NAME=VALUE: Dataset creation option (format specific) -lco NAME=VALUE: Layer creation option (format specific) -oo NAME=VALUE: Input dataset open option (format specific) -doo NAME=VALUE: Destination dataset open option (format specific) -nln name: Assign an alternate name to the new layer -nlt type: Force a geometry type for new layer. One of NONE, GEOMETRY, POINT, LINESTRING, POLYGON, GEOMETRYCOLLECTION, MULTIPOINT, MULTIPOLYGON, or MULTILINESTRING, or PROMOTE_TO_MULTI or CONVERT_TO_LINEAR. Add “25D” for 3D layers. Default is type of source layer. -dim dimension: Force the coordinate dimension to the specified value. -fieldTypeToString type1,…: Converts fields of specified types to fields of type string in the new layer. Valid types are : Integer, Integer64, Real, String, Date, Time, DateTime, Binary, IntegerList, Integer64List, RealList, StringList. Special value All will convert all fields to strings. -fieldmap index1,index2,…: Specifies the list of field indexes to be copied from the source to the destination. The (n)th value specified in the list is the index of the field in the target layer definition in which the n(th) field of the source layer must be copied. Index count starts at zero. There must be exactly as many values in the list as the count of the fields in the source layer. We can use the ‘identity’ setting to specify that the fields should be transferred by using the same order. This setting should be used along with the append setting. -a_srs srs_def: Assign an output SRS -t_srs srs_def: Reproject/transform to this SRS on output -s_srs srs_def: Override source SRS
Srs_def can be a full WKT definition (hard to escape properly), or a well known definition (i.e. EPSG:4326) or a file with a WKT definition.
=====
Cara Penggunaan OGR2OGR
Nah, untuk tahu format apa saja yang didukung oleh OGR2OGR, silahkan lihat keterangan ogr2ogr –long-usage di atas …
Driver OGR dapat mendeteksi otomatis sumber kita, makanya, yang perlu dikasih tahu ke OGR adalah TARGET kita saja …
Karena saya ingin membuat SHP, makanya formatnya bernama “ESRI Shapefile”, lalu diikuti nama file yang ingin dibuat, diikuti oleh FILESUMBER.tab … dan jangan lupa untuk menambahkan target SRS nya, yaitu EPSG:32647, karena saya ingin diproyeksi ke UTM Zona 47N
D:\GIS\Pekanbaru\Bapenda\SMARTMAP\peta>ogr2ogr -f “ESRI Shapefile” 1471010001.shp 1471010001.TAB ERROR 1: Attempt to write non-polygon (POINT) geometry to POLYGON type shapefile. ERROR 1: Unable to write feature 4488 from layer 1471010001. ERROR 1: Terminating translation prematurely after failed translation of layer 1471010001 (use -skipfailures to skip errors)
Error ini karena file asal, tabel nya memiliki 2 jenis fitur, yaitu titik dan polygon. Sedangkan ESRI hanya mendukung 1 jenis fitur saja, apakah titik saja, atau polygon saja …
Nah, agar tidak gagal, perlu juga ditambahkan -skipfailures di perintah ogr2ogr nya … (lihat penggunaan di long-usage di atas)
Cara lebih cepat: menggunakan FOR
OGR2OGR perlu juga kita ketikkan satu per satu nama file nya … dan cukup rempong ..
Agar lebih cepat, kita gunakan perintah FOR pada CMD kita, yaitu
mkdir 32647
mkdir berguna untuk membuat direktori baru, karena saya ingin hasilnya disimpan di direktori tersebut, daripada memenuhin direktori ini …
%~n
Nah, ada yang bagus pada CMD adalah kita bisa menggunakan modifier ~n, yaitu nama file tanpa extensi
sehingga, %~nf artinya adalah namafile saja tanpa extensi … jika %f berisi dodol.tab, maka %~nf akan berisi dodol
%~nf_32647.shp
arti nya adalah ambil nama filenya, tambahkan akhiran _32647.shp
Saya suka (dan menyarankan) untuk membuat kode EPSG pada nama file yang menggunakan proyeksi selain 4326 (WGS 84). Dengan begitu, nanti kita jadi ingat nama proyeksi nya tanpa harus membuka filenya …
32647/%~nf_32647.shp
artinya, buat file nya di direktori 32647/ … karena saya tidak ingin menumpuk di sini …
for %f in (*.tab) do {{{PERINTAH}}}
nah, ini artinya UNTUK SEMUA FILE TAB kita di direktori ini, masukkan ke variabel f
nantinya, baru pada {{{PERINTAH}}} bisa disisipkan variabel f tadi …
variabel pada CMD menggunakan %, bukan $ ya …!
agar tidak merusak, saya pertama kali menggunakan dulu
for %f in (*.tab) do echo ogr2ogr -f “ESRI Shapefile” 32647/%~nf_32647.shp %f -t_srs EPSG:32647
perintah echo artinya tampilkan ke layar saja …
nah, karena saya lihat hasil perintah nya sudah bagus, baru saya ganti PERINTAH nya dengan perintah OGR2OGR di atas … untuk jaga-jaga saja agar tidak salah perintah…
setelah OK, baru echo nya saya hapus …
To Sum Up
seharusnya, sampai di sini Anda sudah tahu arti semua perintah panjang tadi …
for %f in (*.tab) do ogr2ogr -f “ESRI Shapefile” 32647/%~nf_32647.shp %f -t_srs EPSG:32647
Optional: Overwrite dan Skip Failure
berhubung data saya yang tidak bagus, ada juga terkadang menggunakan -skipfailures dan juga -overwrite agar ditimpa saja kalau sudah ada file nya…
Hasilnya
Peringatan
CMD bukan untuk anak SD … atau orang mengaku dewasa tetapi otak masih cengeng. Perintah menggunakan konsol bisa merusak data Anda jika anda tidak berhati-hati. Harap gunakan back-up sebelum melakukan perintah berbahaya, buat jaga-jaga kalau prosesnya merusak.
Buat yang ngga normal, boleh lanjut … tapi sakit kepala tanggung sendiri …
*Prelude*
Sebenarnya lagi sakit (hati) karena ternyata ndak banyak hosting yang dukung mapscript apalagi mapserver. Terpaksa akhirnya generet ubin sendiri lalu diupload ke server, lalu nanti dikonsumsi orang lain secara statis.
Nah, peta PAKANBARU (sesuai judul) yang awalnya 3,7Mb sekarang menjadi 56Mb. Kenapa? karena peta tersebut terpaksa dipotong-potong agar menjadi ubin. Peta Pakanbaru tersebut saya potong untuk zoom level 10 sampai dengan zoom level 13 saja, dan itu sudah 50MB, hampir 20 kali lipat dari ukuran awalnya.
Kenapa peta perlu di fotong fotong jadi ubin?
Agar peta dapat dikonsumsi oleh hp, laptop, peta yang “besar” harus dibuatnkan bertentuk WEBGIS. Nah, agar tampil gambar tersebut di web, tidak mungkin gambar yang besar tersebut dikirim ke client, karena selain menghabiskan bandwidth user, bisa saja tidak mampu ditampilkan oleh user kita nantinya (karena kegedean).
Biar gambar peta yang besar tadi bisa masuk ke henpon, eh smartphone, maka peta tersebut dipotong-potong dulu menjadi ubin atau tile, lalu dengan javascript ditampilkan kembali seolah-olah mereka menyatu. Dengan metode ini, webgis/peta dapat dinikmati dengan cepat dan ringan dan interaktif.
Ubin ? Tile? Sule?
Ngga … bukan artis … istilah ubin adalah versi bahasa untuk tile, yaitu gambar kecil kecil yang disusun seperti menyusun marmer ubin di lantai. Kenapa dibilang ubin? karena berbentuk petak petak kecil-kecil, biasanya 256×256 pixel.
Kenapa gambar kecil? karena kita hanya ingin menampilkan potongan peta yang diperlukan oleh client saja. Untuk apa menampilkan seluruh peta kalau toh user tidak butuh.
Jadi, bagaimana membuat ubin?
Ubin bisa dihasilkan otomatis oleh MapServer atau GeoServer. Namun, mencari server tempat memberikan layanan ini sangat susah. Ada sih, tapi biayanya sekitar 100USD per bulan. Sangat tidak ekonomis. Cara lain adalah dengan setup VPS sendiri lalu install GeoServer atau MapServer di sana.
Padahal, hosting yang banyak adalah shared-hosting PHP yang biasanya untuk menghosting blog (WordPress) atau sistem informasi lain yang masih menggunakan ‘bahasa’ eh priprosesor PHP.
PHP dukung menghasilkan ubin sendiri, tapi harus menggunakan extensi php-mapscript. Nah, hampir seluruh server berbayar (murah, ekonomis) yang saya check, tidak memberikan layanan ini).
Kalaulah hostingan mendukung mapscript, tentu yang perlu saya unggah hanyalah peta awal, yang hanya 3 megaan, lalu world filenya, lalu aux nya, lalu sebuah file map. Ndak kan nyampai 4 mega byte, dan bisa sampai zoom unlimited. Namun, ubin dengan cara ini akan dihasilkan on-the-fly, secara otomatis, secara ‘dinamis’ oleh server, sehingga akan menghabiskan CPU dan memory.
Solusi? Buat dulu ubin dari rumah, lalu upload semua ubin ke server hosting pakai FTP
Jadi, kalau ubin kita seed dahulu, tentu web-server (hosting) nantinya lebih ringan, karena hanya tinggal memberikan file gambar ubinnya.
Kalau pakai MapServer, kelebihannya semua ubin dihasilkan otomatis saat hanya dibutuhkan oleh client saja. Ukuran penyimpanan lebih hemat, namun SANGAT BOROS CPU DAN MEMORY. Makanya server hosting biasanya tidak mau memberikan layanan ini …
makanya di sini saya sakit
cerita baiknya, isyunya salah seorang mahasiswa saya mau meminjamkan resource VPS nya untuk uji ketahanan server ubinnya.
Mudah-mudahan jadi …
Alternatif lain kemaren adalah menggunakan layanan DDNS, lalu men-setting modem internet di rumah agar bisa memberikan port-forwarding ke ‘server’ eh laptop lama gw yang bertidan sebagai tile server. Namun, ini akan mengganggu sedikit bandwidth upload indihome rumah saya, sehingga kalau ada mahasiswa yang main game Mobile Legend di rumah bisa agak terganggu. Donlot yutub ndak terganggu, karena hanya menggunakan bandwidth download.
Pada zaman dahulu … Microsoft berbaik hati memberikan secara percuma citra satelit untuk kota Pekanbaru yang sepertinya diambil pada tanggal 15 Januari 2012. Pada saat itu terlihat stadion utama di Utara kampus UR masih dalam pengerjaan. Foto tersebut telah digantikan dengan foto / citra terbaru, yang sayangnya tidak bertanggal melainkan diberi rentang, seperti ini:
x-ve-tilemeta-capturedatesrange
6/2/2004-8/31/2015
dan sepertinya merupakan citra satelit yang diambil tahun 2014. Nah, bagi Anda yang kolektor, dan mau menyimpan kenangan tampilan kota Pekanbaru tanggal 15 Januari 2012 tersebut, silahkan datang ke Kampus UIN Suska Riau, minta ke mahasiswa saya atau bisa saja langsung ke saya. Ukuran nya 300Megabyte, sudah dimontage/di-stich menjadi JPG tunggal.
Citra Satelit Lama 2012
Citra Satelit terbaru
Berikut GDALINFO untuk gambar tua tersebut:
gdalinfo "Microsoft VirtualEarth z19.jpg"
Driver: JPEG/JPEG JFIF
Files: Microsoft VirtualEarth z19.jpg
Microsoft VirtualEarth z19.jpg.aux.xml
Microsoft VirtualEarth z19.jgw
Size is 29729, 21312
Coordinate System is:
GEOGCS["WGS 84",
DATUM["WGS_1984",
SPHEROID["WGS 84",6378137,298.257223563,
AUTHORITY["EPSG","7030"]],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],
UNIT["degree",0.01745329251994328,
AUTHORITY["EPSG","9122"]],
AUTHORITY["EPSG","4326"]]
Origin = (101.375884115695950,0.511167347431183)
Pixel Size = (0.000005364418030,-0.000005364418030)
Metadata:
COMMENT=Created with SAS.Planet
EXIF_GPSLatitude=(0) (27) (14.4)
EXIF_GPSLatitudeRef=N
EXIF_GPSLongitude=(101) (27) (20.24)
EXIF_GPSLongitudeRef=E
EXIF_GPSMapDatum=WGS-84
EXIF_GPSVersionID=0x2 0x2 00 00
PyramidResamplingType=NEAREST
Image Structure Metadata:
COMPRESSION=JPEG
INTERLEAVE=PIXEL
SOURCE_COLOR_SPACE=YCbCr
Corner Coordinates:
Upper Left ( 101.3758841, 0.5111673) (101d22'33.18"E, 0d30'40.20"N)
Lower Left ( 101.3758841, 0.3968409) (101d22'33.18"E, 0d23'48.63"N)
Upper Right ( 101.5353629, 0.5111673) (101d32' 7.31"E, 0d30'40.20"N)
Lower Right ( 101.5353629, 0.3968409) (101d32' 7.31"E, 0d23'48.63"N)
Center ( 101.4556235, 0.4540041) (101d27'20.24"E, 0d27'14.41"N)
Band 1 Block=29729x1 Type=Byte, ColorInterp=Red
Overviews: 14865x10656, 7433x5328, 3717x2664
Image Structure Metadata:
COMPRESSION=JPEG
Band 2 Block=29729x1 Type=Byte, ColorInterp=Green
Overviews: 14865x10656, 7433x5328, 3717x2664
Image Structure Metadata:
COMPRESSION=JPEG
Band 3 Block=29729x1 Type=Byte, ColorInterp=Blue
Overviews: 14865x10656, 7433x5328, 3717x2664
Image Structure Metadata:
COMPRESSION=JPEG
Terlihat ukuran nya adalah 29729×21312 pixel, jadi cukup besar tapi ngga besar banget … karena cakupan nya (lihat di extent nya / Corner Coordinates nya), hanya sebahagian kecil kota Pekanbaru saja, seperti terlihat di bawah ini …
Resolusi gambar sudah sangat sempurna, sekitar 60cm per pixel, perhitungan ecek ecek saya seperti ini (dalam meter).. angka 111361,52394697778880823075590439 adalah angka ajaib faktor pengali meter per derjat untuk desa ranah singkuang UTM zona 47N
Angka 0,000005364418030 diambil dari Pixel Size dari GDALINFO
Penginderaan Jauh (Indraja) atau bahasa ocu-nya, remote sensing, paling bete kalo ketemu awan.
Dan tahukah Anda apa yang lebih bete lagi setelah itu? setelah melakukan filter terhadap citra Sentinel 2 untuk kota Pekanbaru yang memang sering tertutup awan, cuma ada satu gambar semenjak 2016 yang layak untuk perhitungan, yaitu yang diambil tanggal 2017-04-04, atau linknya sebagai berikut:
Anda harus log masuk untuk menerbitkan komentar.