Wednesday, June 10, 2020

Alternatif IDE untuk Programming Python di Linux dan Windows

Alternatif IDE untuk Programming Python di Linux dan Windows
Saya akan berbagi list IDE yang bisa digunakan dalam membuat pemrograman menggunakan python yang sangat handal dan bisa digunakan di Windows dan Linux.

1. Visual Studio Code



Bisa di download disini Download

2. Atom

Bisa di download disini Download

3.  Anaconda



Bisa di download disini Download

Semoga bermanfaat. @wawanhn

Referensi:
https://linuxhint.com/python_ide_ubuntu/

Friday, April 12, 2019

Analisis Geospatial menggunakan Python Bagian 4 - Konversi SHP ke PostgrSQL

Analisis Geospatial menggunakan Python Bagian 4 - Konversi SHP ke PostgrSQL
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

Wednesday, April 10, 2019

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

Analisis Geospatial menggunakan Python Bagian 3 - Membuat Tabel di Database PostgreSQL
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

Analisis Geospatial menggunakan Python Bagian 2 - Membuat Database di PostgreSQL
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

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)