Tracking Live GPS dengan Google Earth

Add Comment


Di Google Earth kita dapat melakukan tracking dengan menggunakan GPS secara live. Langkah yang dilakukan adalah sebagai berikut:

1. Buka Google Earth.

2. Sambungkan GPS ke komputer dengan menggunakan kabel data.


3. Kemudian koneksikan GPS ke Google Earth dengan memilih menu Tools - > GPS


4. Setting Jendela windows GPS, klik pada tab Realtime kemudian pada bagian Select protocol pilih Garmin PVT. Cheklis Automatically follow the path, kemudian klik button Start. 


5. Maka kita telah mengkoneksikan GPS dan Google Earth, sebaiknya kita menyambungkan komputer ke Internet sehingga bisa melihat tracking GPS dengan data Google Earth secara online.

Terima kasih, semoga bermanfaat. @wawanhn 

Cara Mengetahui Password WIFI dengan CMD

Add Comment
Untuk mengetahui password dari sebuah wifi yang pernah kita terkonek ke jaringan tersebut, misal karena lupa dan lain sebagainya bisa dengan mudah dilakukan menggunakan perintah di command promt atau cmd.

Langkahnya yaitu:

Buka cmd atau command prompt dengan cara run as administrator

kemudian ketik perintah:

   netsh wlan show profile

Perintah tersebut untuk menampilkan daftar wifi yang pernah kita gunakan atau terkoneksi dan untuk dicari tahu passwordnya.


Gambar 1. Tampilan daftar wifi yang pernah terkonek di komputer

kemudian ketikan perintah:

netsh wlan show profile nama_wifi key=clear, ganti nama_wifi dengan nama wifi yang akan dicari passwordnya.


Gambar 2. Tampilan hasil perintah yang menampilkan detail WIFI yang pernah terkonek

Dari tampilan tersebut diperlihatkan detail dari wifi dan password wifi dalam Key Content. Terima kasih sudah menyimak, semoga bermanfaat. @wawanhn 

Referensi:





Konversi Feature Class sebuah Geodatabase yang mempunyai Domain dan Subtype kedalam format SHP

Add Comment
Dalam tulisan sebelumnya saya pernah share tentang cara konversi Geodatase ArcGIS menjadi file shp. Dalam tulisan tersebut menjelaskan bagaimana langkah-langkah dalam melakukan konversi sebuah geodatabase ataupun feature class kedalam format shapefile (shp) sehingga bisa lebih mudah melakukan analisis spasial bagi yang belum terbiasa dengan Geodatabase.

Namun terdapat permasalahan dalam konversi file tersebut jika Geodatase ArcGIS tersebut menggunakan domain dan subtype dalam manajemen atributnya. Cara membuat domain dan subtype dalam ArcGIS akan saya sharing di tulisan yang lain. Namun sebagai gambaran umum domain dan subtype digunakan sebagai untuk membuat acuan atau referensi dari sebuah kolom dengan mengacu pada kode tertentu, dengan tujuan mempermudah dan menjaga konsistensi dari atribut data tersebut. Misalnya dalam dalam peta administrasi kecamatan terdapat sebuah kolom yang isinya adalam menjelaskan kategori dari pembanguan di suatu kecamatan tersebut yaitu:

kode    deskripsi
---------------------
  1        tertinggal
  2        menengah
  3        maju
---------------------

dengan menggunakan domain dan subtype kita dapat dengan meudah mengisi atribut kolom kategori dengan mudah dan terjaga konsistensinya dari kesalahan penulisan dengan mengacu pada kode yang sudah didefinisikan. Sebagai contoh saya perlihatkan gambar sebuah Geodatabase yang mempunyai feature class bataskecamatan yang mengunakan domain dan subtype.


Gambar 1. Feature class yang mempunyai domain dan subtype

Dalam file batas kecamatan tersebut terdapat beberapa field/kolom yaitu id, nama, dan kategori. Kolom id berisi id kecamatan, kolom nama berisi nama kecamatan dan kolom kategori yang berisi informasi dari jenis kategori pembangunan di kecamatan tersebut dalam format text/string.
Isi dari kolomkategori sebenarnya merupakan deskripsi kategori  kode kategori yang terdapat dalam domain.
Jika kita konversi langsung feature class dari geodatabase tersebut kedalam format shp maka yang akan dihasilkan dalam atribut tabel adalah seperti ini.


Gambar 2. Atribut tabel hasil konversi ke shp

Dalam atribut tabel tersebut yang dikonversi ke format shp pada kolom kategori hanya berisi kode berupa angka 1 dan 2 sedangkan deskripsi dari kode tersebut tidak ditampilkan. Sehingga kita membutuhkan beberapa langkah untuk mengisi kolom kategori tersebut baik dengan cara mengisi manual ataupun dengan melakukan join ke tabel referensi kategori.

Dengan demikian supaya kita tidak harus melakukan langkah-langkah lain, maka yang harus dilakukan dalam konversi tersebut adalah dengan melakukan setting terhadap variabel Environtments. Caranya yaitu:

  • seperti biasa klik kanan di feature class yang akan di konversi lalu pilih Export -> To Shapefile (single) karena hanya 1 file yang akan di konversi, sehingga muncul dialog window fungsi Feature Class to feature class. 
  • klik button Environments sehingga tampil dialog window Environments Setting. Kemudian pada bagian Field ceklis Transfer field domain description, kemudian klik OK dan OK
  • Tunggulah sampe proses berhasil.

Gambar 3. Setting variabel Environments


Jika proses berhasil maka akan dihasilakan file shp bataskeac2.shp yang mempunyai atribut seperti pada Gambar 2 namun dengan tambahan 1 kolom yaitu d_kategori yang berisi deskripsi kategori dari kode kolom kategori.

Okay kita berhasil konversi file feature class beserta deskripsi dari domain dan subtype nya, sehingga kita tidak perlu mengisi data kategori secara manual ataupun melakukan join ke table referensi. Demikian tulisan sederhana ini semoga bermanfaat. Dan sebagai catatan dalam tulisan tersebut saya menggunakan ArcGIS 10.6 untuk melakukan operasi tersebut. @wawanhn

Referensi:
https://community.esri.com/thread/166445

Analisis Geospatial menggunakan Python Bagian 4 - Konversi SHP ke PostgrSQL

Add Comment
Saat ini kita lanjutkan setelah dibuat geodatabase py_geo_db di POstgreSQL sebelumnya. Kita akan mengkonversi file shapefile ke dalam geodatabase PostgreSQL.

Dalam contoh ini saya akan menggunakan dengan format shapefile. Anda bisa mengganti file shp dengan file anda sendiri. Berikut contoh kode programnya sebagai berikut:

# -*- coding: utf-8 -*-
"""
Created on Fri Apr 12 09:36:42 2019

@author: Wawan H Nur
Mengkonversi file shp BatasKabupaten.shp ke database py_geo_db di PostgreSQL
"""

import subprocess

db_schema = "SCHEMA=geodata"
overwrite_option = "OVERWRITE=YES"
geom_type = "POLYGON"
output_format = "PostgreSQL"

db_connection = """PG:host=localhost port=5432 user=userwhn dbname=py_geo_db password=pwdwhn"""
                         
input_shp = "../geodata/BatasKabupaten.shp"

subprocess.call(["ogr2ogr", "-lco", db_schema, "-lco", overwrite_option, "-nlt", geom_type, "-f", output_format, db_connection, input_shp])

Penjelasan dari kode program tersebut adalah melakukan konversi file shp dengan nama BatasKabupaten.shp yang mempunyai tipe geometri polygon kedalam geodatabase py_geo_db pada schema geodata. Kode skrip tersebut akan menghasilkan sebuah tabel BatasKabupaten di database py_geo_db pada schema geodata. Output format yang akan kita tuju PostgreSQL.

Untuk melihat layer hasil konversi dapat dilakukan dengan menggunakan QGIS. 




Untuk tipe geometri terdapat beberapa format dengan contoh datanya sebagai berikut:
  • POINT(0 0)
  • LINESTRING(0 0,1 1,1 2)
  • POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1))
  • MULTIPOINT(0 0,1 2)
  • MULTILINESTRING((0 0,1 1,1 2),(2 3,3 2,5 4))
  • MULTIPOLYGON(((0 0,4 0,4 4,0 4,0 0),(1 1,2 1,2 2,1 2,1 1)), ((-1 -1,-1 -2,-2 -2,-2 -1,-1 -1)))
  • GEOMETRYCOLLECTION(POINT(2 3),LINESTRING((2 3,3 4)))
Selain dengan menggunakan kode program Python, kia dapat langsung melakukan konversi file shp dengan manggunakan command prompt dengan memanfaatkan fungsi shp2pgsql yang terdapat dalam instalasi PostgreSQL. Yaitu dengan cara di command prompt kita menuju folder bin dalam installan PostgreSQL kita. Kode perintah yang dapat digunakan untuk mengkonersi file shp seperti contoh diatas seperti ditampilkan di bawah ini:

shp2pgsql -g localhost -s 4532 -c -D -I D:/Virt/data/BatasKabupaten.shp geodata.BatasKabupaten | psql -U userwhn py_geo_db

Adapun bentuk umum kode konversi file shp diatas adalah:

shp2pgsql -g <host> -s <port> -c -D -I <lokasi file shp> <schema.tabel> | psql -U <user> <database>

Demikian tulisan singkat ini semoga bermanfaat dan akan dilanjutkan dengan bahasan selanjutnya, terima kasih. @wawanhn

Referensi: 
https://pcjericks.github.io/py-gdalogr-cookbook/vector_layers.html?highlight=shp#get-all-postgis-layers-in-a-postgresql-database

https://automating-gis-processes.github.io/CSC18/index.html


https://medium.com/@chrieke/essential-geospatial-python-libraries-5d82fcc38731


http://postgis.refractions.net/documentation/manual-1.3/ch04.html

Analisis Geospatial menggunakan Python Bagian 3 - Membuat Tabel di Database PostgreSQL

Add Comment
Setelah sebelumnya membuat database di PostgreSQL, saat ini akan ditampilkan cara:

  1. Membuat tabel
  2. Menginput data
  3. Menampilkan data
  4. Update data
  5. Menghapus data
Saat ini dalam contoh kode program ini saya akan menggunakan library psycopg2 merupakan library yang secara standar terinstall saat kita install python.

Membuat File koneksi ke database
"""

Created on Wed Apr 10 17:03:24 2019

@author: Wawan H Nur
Koneksi ke database di POstgreSQL
"""

import psycopg2
import Conf_postgresql as psql

PGHOST = "localhost"

PGDATABASE = "py_geo_db"

PGUSER = "userwhn"

PGPASSWORD = "pwdwhn"

PGSCHEMA = "geodata"

conn_string = "host="+ psql.PGHOST+ " port=" + "5432" + " dbname="+ psql.PGDATABASE + " user=" + psql.PGUSER+" password="+ psql.PGPASSWORD
            
conn = psycopg2.connect(conn_string)

print("Connection Success")

Membuat Tabel di Database
"""
Created on Wed Apr 10 17:08:57 2019

@author: Wawan HN
Membuat tabel di database py_geo_db dengan schema=geodata
"""

import psycopg2
import Connection_to_DB as con

connect = con.conn

cur = connect.cursor()
cur.execute('''CREATE TABLE '''+con.PGSCHEMA+'''.PERSON2 (ID INT PRIMARY KEY NOT NULL,
            NAME TEXT NOT NULL,
            AGE INT NOT NULL,
            ADRESS CHAR(50),
            SALARY REAL);''')

print("Table created successfuly")

connect.commit()
connect.close() 

Menginput data ke tabel di Database
"""
Created on Wed Apr 10 17:44:26 2019

@author: Wawan H Nur
Menambahkan data dalam tabel
"""

import psycopg2
import Connection_to_DB as con

connect = con.conn

cur = connect.cursor()

cur.execute("INSERT INTO " +con.PGSCHEMA+".COMPANY (ID, NAME, AGE, ADRESS, SALARY)\
            VALUES(3,'Bruce', '32', 'Ujungberung', 20000.00)");

cur.execute("INSERT INTO " +con.PGSCHEMA+".COMPANY (ID, NAME, AGE, ADRESS, SALARY)\
            VALUES(4,'Tony', '33', 'Bojongsoang', 30000.00)");

cur.execute("INSERT INTO " +con.PGSCHEMA+".COMPANY (ID, NAME, AGE, ADRESS, SALARY)\
            VALUES(5,'Dede', '32', 'Texas', 20000.00)");

cur.execute("INSERT INTO " +con.PGSCHEMA+".COMPANY (ID, NAME, AGE, ADRESS, SALARY)\
            VALUES(6,'Johny', '33', 'Cicaheum', 50000.00)");
            
connect.commit()
print("Records created succesfully")

connect.close()

Menampilkan data dari Tabel
"""
Created on Wed Apr 10 17:57:48 2019

@author: Wawan H Nur
Menampilkan data
"""

import psycopg2
import Connection_to_DB as con

connect = con.conn

cur = connect.cursor()

cur.execute("SELECT * FROM "+ con.PGSCHEMA +".company")

rows = cur.fetchall()
for row in rows:
    print("ID      = ", row[0])
    print("NAME    = ", row[1])
    print("AGE     = ", row[2])
    print("ADDRESS = ", row[3])
    print("SALARY  = ", row[4],"\n")

print("Operation done successfully")

connect.close()

Update data dalam suatu Tabel
"""
Created on Wed Apr 10 18:28:07 2019

@author: Wawan H Nur
Update data
"""

import psycopg2
import Connection_to_DB as con

connect = con.conn

cur = connect.cursor()

cur.execute("UPDATE " +con.PGSCHEMA+".COMPANY set SALARY = 25000.00 WHERE ID=2")
connect.commit()
print("Total number of rows updated: ", cur.rowcount)

cur.execute("SELECT * FROM "+ con.PGSCHEMA +".company")
rows = cur.fetchall()
for row in rows:
    print("ID      = ", row[0])
    print("NAME    = ", row[1])
    print("AGE     = ", row[2])
    print("ADDRESS = ", row[3])
    print("SALARY  = ", row[4],"\n")

print("Operation done successfully")

connect.close()

Menghapus data dari Tabel
"""
Created on Wed Apr 10 18:37:17 2019

@author: Wawan H Nur
Delete data
"""

import psycopg2
import Connection_to_DB as con

connect = con.conn

cur = connect.cursor()

cur.execute("DELETE FROM " +con.PGSCHEMA+ ".company  WHERE ID=2;")
connect.commit()
print("Total number of rows deleted: ", cur.rowcount)

cur.execute("SELECT * FROM "+ con.PGSCHEMA +".company")

rows = cur.fetchall()
for row in rows:
    print("ID      = ", row[0])
    print("NAME    = ", row[1])
    print("AGE     = ", row[2])
    print("ADDRESS = ", row[3])
    print("SALARY  = ", row[4],"\n")

print("Operation done successfully")

connect.close()

Demikian dulu tulisan ini, semoga bermanfaat. Silahkan tunggu untuk tulisan selanjunya @wawanhn

Refrensi: https://www.tutorialspoint.com/postgresql/postgresql_python.htm

Analisis Geospatial menggunakan Python Bagian 2 - Membuat Database di PostgreSQL

Add Comment
1. Buka command prompt dan menuju installan PostgreSQL misal foldernya terdapat di c:\Program Files\ PostgreSQL\9.3\bin\ 

2. Kemudian membuat user baru untuk database baru dengan menggunakan user postgres, dalam contoh ini saya akan buat username userwhn

C:\Program Files\PostgreSQL\9.5\bin>createuser.exe -U postgres -P userwhan

3. Kemudian kita diminta password dari role user userwhn misal saya masukan "pwdwhn", masukan sekali lagi dan selanjutnya masukan password user postgres yang sudah diset saat install PosgreSQL sebelumnya.



4. Buat database baru, contoh namannya py_geo_db:

createdb.exe -O userwhn -U postgres py_geo_db

masukan password dari user userwhn


5. Buat ektensi POSTGIS kedalam database py_geo_db:

psql -U postgres -d py_geo_db -c "CREATE EXTENSION postgis;" 

dan masukan password user postgres

6. Buat schema misalkan dengan nama geodata sehingga data tidak disimpan dalam schema public

psql.exe -U postgres -d py_geo_db -c "CREATE SCHEMA geodata AUTHORIZATION userwhn"

masukan password untuk user postgres

Maka kita telah berhasil membuat database di PostgreSQL, untuk melihat hasilnya dapat dilihat mengguanakan PgAdmin.

Semoga bermanfaat, dan dilanjutkan pada tulisan selanjutnya.




Menghapus File SHP menggunakan Python

Add Comment
Dengan menggunakan bahasa Python saya akan memberikan contoh kode program menggunakan bahasa Python untuk menghapus file shp. Dalam kode program ini membutuhkan library ogr. Berikut saya tampilkan contoh kode program tersebut.

Sebelumnya install dulu library ogr langkahnya seperti dalam Analisis Geospasial Bagian 1. Setelah selesai menginstal library ogr selanjutnya kita cek driver yang tersedia dalam library ogr. Sehingga kita dapa memastikan untuk dapat melakukan operasi terhadap file dengan format shapefile, PostgreSQL, FileGDB, SDE dll.

from osgeo import ogr



## CSV available?
driverName = "CSV"
drv = ogr.GetDriverByName( driverName )
if drv is None:
    print ("%s driver tidak tersedia.\n" % driverName)
else:

    print  ("%s driver tersedia.\n" % driverName)

## Shapefile available?
driverName = "ESRI Shapefile"
drv = ogr.GetDriverByName( driverName )
if drv is None:
    print ("%s driver tidak tersedia.\n" % driverName)
else:
    print  ("%s driver tersedia.\n" % driverName)

## PostgreSQL available?
driverName = "PostgreSQL"
drv = ogr.GetDriverByName( driverName )
if drv is None:
    print ("%s driver tidak tersedia.\n" % driverName)
else:
    print  ("%s driver tersedia.\n" % driverName)

## Is File GeoDatabase available?
driverName = "FileGDB"
drv = ogr.GetDriverByName( driverName )
if drv is None:
    print ("%s driver tidak tersedia.\n" % driverName)
else:
    print  ("%s driver tersedia.\n" % driverName)

## SDE available?
driverName = "SDE"
drv = ogr.GetDriverByName( driverName )
if drv is None:
    print ("%s driver tidak tersedia.\n" % driverName)
else:

    print  ("%s driver tersedia.\n" % driverName)


Dalam contoh ini saya akan menghapus sebuah file shapefile schools1.shp  yang terdapat dalam folder geodata. Berikut kode program tersebut:

from osgeo import ogr
import os

Driver_name = "ESRI Shapefile"
File_name = "../geodata/schools1.shp"
Driver = ogr.GetDriverByName(Driver_name)
if os.path.exists(File_name):
    Driver.DeleteDataSource(File_name)
    print ("Sukses menghapus file: "+ File_name)