archiveren

Tips and tricks

Vandaag liep ik tegen een interessant stukje lichte frustratie op. Al jaren ben ik vooral bezig met postgresql/postgis. Een database die me zeer goed bevalt. Niet omdat het de beste/snelste/veiligste/stabielste database is, maar gewoon, omdat ik er fijn mee kan werken.

Case 1: geometry naar wkt

Vandaag moest ik weer met Oracle aan de slag. Vanuit een Java webservice haal ik gegevens uit Oracle die vervolgens via Rest worden ontsloten. Dan maar even zelf queries bakken en de geometrie omzetten naar WKT (Well known text) zodat ik niet allerlei bibliotheken moet downloaden voor java, maar de data gewoon kan benaderen als tekst.

Oracle:

select SDO_GEOMETRY( 
    o.geometry.sdo_gtype, 
    NULL,
    o.geometry.sdo_point,
    o.geometry.sdo_elem_info,
    o.geometry.sdo_ordinates).get_wkt() 
from onderdelen o;

PostGIS:

select asWKT(geometry) from onderdelen;

Case 2: md5 hash

Mijn database gebruikt wachtwoorden uit andere systemen. Omdat ik geen veiligheids issue wil introduceren, wilde ik proberen de wachtwoorden versleuteld op te slaan. De meest eenvoudige manier hiervoor is in mySQL en Postgresql md5. Ik wil dus met sql een md5 hash genereren voor een wachtwoord zodat wachtwoorden niet zichtbaar in een database hoeven te worden opgeslagen

Oracle:

create or replace function md5(input varchar2) 
  return sys.dbms_obfuscation_toolkit.varchar2_checksum as 
    begin 
        return lower(
            rawtohex(utl_raw.cast_to_raw(
                sys.dbms_obfuscation_toolkit.md5( 
                  input_string => input 
                )
            ))
        ); 
    end;

select md5('mijnwachtwoord') from dual;

PostGres:

select md5('mijnwachtwoord);

Met de pet op van SQL ontwikkelaar is het duidelijk; de queries van postgresql zijn intuitief en lijken op echte mensentaal. De queries van Oracle zijn onnodig complex, ontbreken soms en moeten dan via functies worden herbouwd en zijn absoluut niet in een oogopslag door een leek te lezen. Wanneer ik het aantal uren bij elkaar optel dat ik per jaar door de eenvoudige SQL van Postgresql bespaar met zoeken en prutsen, dan kan ik zelf al snel concluderen dat postgresql voor mij op dit vlak de absolute winnaar is.

postgis setting to shift from the bessel ellipsoid to the wgs84 ellipsoid for the dutch national coordinate system:

update 
   spatial_ref_sys 
set proj4text =
       '+proj=sterea +lat_0=52.15616055555555 
        +lon_0=5.38763888888889 +k=0.999908 
        +x_0=155000 +y_0=463000 +ellps=bessel 
        +units=m 
        +towgs84=565.2369,50.0087, 465.658, 
        -0.406857330322398,0.350732676542563,
        -1.8703473836068,4.0812 
        +no_defs' 
where 
   srid=28992;

This fix corrects issues in Google Maps, Google Earth and other wgs84 based coordinate systems.

oms2go is a nice little openstreetmap editor that was designed for the maemo platform. I managed to install it on moblin too.

sudo yum install subversion gcc libtool libcurl-devel libsoup-devel gtk-doc make gnome-vfs-devel libgnome-devel gtk2-devel
svn co http://svn.gnome.org/svn/goocanvas/trunk/ goocanvas
svn co https://garage.maemo.org/svn/osm2go/branches/ports/debian osm2go

#first compile goocanvas
cd goocanvas
./autogen.sh
./configure --prefix=/usr
make
sudo make install
cd ..
#osm2go
cd osm2go
./configure
make
sudo make install
cd ..
#Finished. You can issue osm2go to start!