Everything Java Apache Geospatial Open Source. Hello Shinning Stars!!! Vincent Massol, Raphael Luta, Santiago Gala, Carsten Z.

Friday, January 12, 2007

Entrepreneurs

One way to make a living in Open Source is to create a proprietory format based on Open standards with proprietory extensions. Here is an example. You modify and build a custom portal from an Open Source portal. Your tool creates JSR-168 or JSR-286 war files (open standard) with proprietory extensions. Give it a .portal file suffix. The majority of the format respects the portlet standard and the extensions make it proprietory. With some modifications from a professional it can become standard therefore interesting to the Free Software Community.

Tuesday, January 02, 2007

I am working on a funded project for government emergency response management in the united states. There is an early open source version of this, http://www.mapimage.com/openaddress.org/. It is derived from MapServer and MapTools software.

I have contributed a MapServer integration project to the Apache Portals project. The source code is here, http://svn.apache.org/repos/asf/portals/bridges/trunk/mapserver. The documentation is here, http://wiki.apache.org/portals/MapServerPortlet.

I studied general geology and computer science leading me to a career as a independent consultant. My products include portals, internet mapping apps, xml utilities, database tools, development and compile platforms derived primarily from Apache projects.

The Java platform is my preferred development environment although I am also a competent database and Linux system administrator. I have been programming in Java for 8 years and have been working with open source software for 5 years.
Squeezing the Dojo Toolkit and AndroMDA into Apache Portals Jetspeed 2

Apache Portals Jetspeed is a component based Enterprise Portal Server implementing the JSR-168 Portlet Standard. The Dojo Toolkit is an Ajax ready rich client interface for creating Web 2.0 pages. AndroMDA is a code generator that make using UML useful. When combined these three tools make data integration fun again. All stacked up in combination with the Apache httpd web server and Apache Tomcat and Apache Harmony to bring database Apache DB Derby cross platform web applications to the browser of your choice. This talk will demonstrating using an integrated Apache web platform with tight single sign on security to web applications running on the Internet.

Tuesday, December 12, 2006

It will be a big day when Microsoft distributes a Linux client. This is what proves Linux is not gaining much of Microsofts turf. For now there is smb://192.168.0.2/e
Cartographic Symbols and Lines



Getting a common street lines to render using MapServer is done using the symbol directive. Define the symbol.

SYMBOL
NAME 'circle'
TYPE ELLIPSE
POINTS 1 1 END
FILLED TRUE
END

And define your line layer with two style objects. One for the solid line and one for the outline.

LAYER
NAME Streets
TYPE LINE
STATUS OFF
DATA StreetsRR/CompletedCenterlines1-3

LABELITEM 'Fename'
CLASS
STYLE
SYMBOL 'circle'
COLOR 180 180 180
SIZE 3
END
STYLE
SYMBOL 'circle'
COLOR 255 255 255
SIZE 1
END
LABEL
ANGLE auto
TYPE truetype
FONT luxisr
MINFEATURESIZE 40
MINDISTANCE 150
SIZE 12
COLOR 0 0 0
END
TEMPLATE "templates/StreetsRR/Streets.html"
END

HEADER "templates/StreetsRR/Streets_header.html"
FOOTER "templates/StreetsRR/Streets_footer.html"

END
Linux ODBC

When you get the following command to work you've got Linux ODBC working but getting there is not always easy. I'm using Debian 3.1 other distros may vary.

isql -v myDatasource

The argument myDatasource is the name defined in /etc/odbc.ini

postgres@debian:~$ cat /etc/odbc.ini
[pg]
Description = Rose
Driver = PostgreSQL
Trace = Yes
TraceFile = /tmp/psqlodbc.log
Database = rose
Servername = localhost
UserName = postgres
Password = myPassword
Port = 5432
Protocol = 6.4
ReadOnly = No
RowVersioning = No
ShowSystemTables = No
ShowOidColumn = No
FakeOidIndex = No
ConnSettings =

Notice the username is the default postgres account. The Driver and Database are also key values.

The Driver is defined in /etc/odbcinst.ini

postgres@debian:~$ cat /etc/odbcinst.ini
[PostgreSQL]
Description = PostgreSQL ODBC driver
Driver = /usr/lib/odbc/psqlodbc.so
Setup = /usr/lib/odbc/libodbcpsqlS.so
Debug = 1
CommLog = 1
FileUsage = 1




Tuesday, November 28, 2006

Marvellous discovery. The GPX format. An xml schema for GPS data. I just used it with my GPS. A garmin legend c. To sample this out I used Debian 3.1 and an excellent tool called gpsbabel version 1.3.2. It worked right out of the box.

sudo apt-get install gpsbabel

sudo gpsbabel -t -r -w -i garmin -f usb: -o gpx -F gironde.gpx

The format stores way points with latitude longitude name description current time symbols and elevation.

Tracks are stored as track segments with track points containing the latitude longitude time and elevation.

Sunday, November 26, 2006

Spatial Network Travel

Thursday, November 23, 2006

Emulating Windows XP on Linux using QEMU

Quoting the quickstart guide.

Create an virtual Harddrive

qemu-img create -f qcow windowsxp.img 3G

Install Windows XP

qemu -cdrom /dev/cdrom -hda windowsxp.img -m 256 -boot d

This command means to boot from the d drive using 256 megabytes of RAM. The -cdrom option indicates where to find the device.

Networking is configured by default and Windows XP should configure itself with DHCP.
OpenSuSE 10.1 Network Install on AMD 64 Athalon

Requirements

cdrom read write
network connection

Prepare the CD

Download, write, and boot from the miniiso.

Specify Resource

At the boot menu type,

install=http://ftp.opensuse.org/pub/opensuse/distribution/SL-10.1/

Sunday, November 19, 2006

Great News! Apache talks to Tomcat through the AJP proxy. Check out mod_proxy_ajp. To enable this great service add the following to your httpd.conf file.

ProxyPass /jetspeed ajp://127.0.0.1:8009/javacontext
Geospatial data units, commonly refered to as features, can be related to one another in one of three fundamental ways. Mutually exclusive meaning that there is no space common to both features, partially inclusive meaning that each feature overlaps the other but not entirely. They occupy space that is both common and unique to one another. And all inclusive meaning one feature si defined entirely within the bounds of the other. Points, lines and polygons can relate to polygons in this way. Yet lines can only intersect one another. Points can be part of a line and can be included in a polygon or be part of the polygons bound definition.

Thursday, November 16, 2006

I've been doing alot of security lately and I need to backup some derby databases from one machine to another. The backup strategy is simple create an compressed archive and copy it using a secure connection to another machine. I'm documenting the process here. I want to backup a directory found at /path/parent/data. And I want the archive to maintain the directory data so that when it is expanded it writes one directory data and all the contents below it.

cd /path/parent
tar czf /tmp/data-`date +%j`.tar.gz data

The archive name is created with a %j indicating the day of the year. Therefore maintaining a year of backups. The next year will start to overwrite previous backups.

Then we want to copy the data to a remote machine. A secure encrypted copy can be sent to the remote machine. But in order to incorporate this in a cron job the remote machine must accept a password-less connection. These are the steps to generate the key. Run ssh-keygen without providing a passphrase.

ssh-keygen -t rsa
scp ~/.ssh/id_rsa.pub remoteuser@remotemachine:.ssh/authorized_keys2

Now remote connections can be made without providing a password. Meaning the remote machine trusts the local machine.

Tuesday, November 14, 2006

OpenSSL

sudo openssl genrsa -des3 -out domainname.key 1024
sudo openssl rsa -noout -text -in domainname.key
sudo openssl req -new -key domainname.key -out domainname.csr
sudo openssl req -noout -text -in domainname.csr

Monday, November 13, 2006

Setting up an Apache2 SSL and SuSE 10 Firewall

Setting the SuSEfirewall2 to accept https connections requires a modification to /etc/sysconfig/SuSEfirewall2.

FW_SERVICES_EXT_TCP="ssh www 443 8888"

This definition allows the Internet to connect via ssh http https and a backdoor tomcat server. Apply the new rules with,

sudo /sbin/SuSEfirewall2 start

Configuring the Default SuSE Apache 2.2 SSL

Useful guides can be found in /usr/share/doc/packages/apache2. Check out README, README.QUICKSTART, README.QUICKSTART.SSL and README.SUSE.

Define a NameVirtualHost in /etc/apache2/listen.conf

NameVirtualHost www.example.com:443

Enable the ssl configuration by copying /etc/apache2/vhosts.d/vhosts-ssl.template to vhosts-ssl.conf (only files with the extension conf will be read). Change the line with _default_ as indicated below.





Create a Test Certificate

cd /usr/share/doc/packages/apache2
sudo ./certificate.sh

Restart Apache

sudo /etc/init.d/apache2 restart

Friday, November 10, 2006

Using Ajax Dojo Toolkit
  • The first difficulty was finding out what onClick event was being called when I clicked a checkbox. (Turns out to be some event listener addition)
  • Code that got things working:


dojo.event.connect(portletsTable, "updateEditor", updateEditor );
dojo.event.connect(portletsTable, "saveEntrySubmit", saveEntrySubmit );
dojo.event.connect(portletsTable, "clearAndDisableEditor", clearAndDisableEditor );
portletsTable.getNewEntryPrototype = getNewEntryPrototype;
var data = [] ;
##foreach($p in $portletPermissions)
//data.push( { name: "$p.Permission.Name", actions: "$p.Permission.Actions", roles: "$p.Roles", Id: $velocityCount } );
##end
data.push( { name: "Xin603 1", actions: "192.168.0.1", roles: "EF:E2:D5:6A:4B:44", Id: 1 } );
data.push( { name: "Xin603 2", actions: "192.168.0.2", roles: "55:E1:D2:7A:4B:44", Id: 2 } );
data.push( { name: "Xin603 3", actions: "192.168.0.3", roles: "55:A1:2D:A2:41:34", Id: 3 } );
portletsTable.js_masterdata = data;
portletsTable.js_type = "portlet";

Thursday, November 09, 2006

Debian Unstable
I've taken the leap into debian unstable territory. I needed a new version of gcc. Newer than 3.3.4. Stepping closer to the edge. The contents of my sources.list has changed to:

deb ftp://ftp2.fr.debian.org/debian/ stable main
deb-src ftp://ftp2.fr.debian.org/debian/ stable main
deb http://security.debian.org/ stable/updates main
p

Monday, November 06, 2006

MapServer - ODBC - OGR - Postgresql 7.4.7

I'll have to admit that this is not cutting edge mapping, but it is platform independent using php4, unixodbc, and apache. It works on Linux and works on Windows. The objective here is to get map plotting working. Scalability and security are assured by using a relational database.

OGR

OGR is a vendor independent geospatial data access library included with gdal.

Simplify Data

To illustrate properly map plotting of point data such as addresses we have set up a database table containing longitude and latitude data.

Map Server

Map Server is configured to read from the database and display custom icons for point data.

OGR Configuration





ODBC:postgres/password@pg


MappingPlot



wkbPoint



MapFile Configuration

The following configuration lets the user plot different icons given the value of icon_id. The layer will only display icons from the mapping_plot table where parameters_id is equal to 1. This is achieved using the FILTERITEM and FILTER keywords. Labels are shown from the tables remarks column.

LAYER
NAME "MapPlottingbob"
CONNECTION "conf/MapPlotting.ovf"
CONNECTIONTYPE OGR
STATUS ON
TYPE POINT
DATA mapping_plot
CLASSITEM icon_id
FILTERITEM "parameters_id"
FILTER "1"
LABELITEM "remarks"


CLASS
EXPRESSION "1"
SYMBOL "/home/phil/liveaxis/src/rose-0.3.7/graphics/crime.png"

STYLE
COLOR 0 0 0
END

LABEL
MINFEATURESIZE 40
MINDISTANCE 150
POSITION UR
SIZE MEDIUM
COLOR 0 0 255
END
TEMPLATE "templates/MappingPlot/MappingPlot.html"
END

CLASS
EXPRESSION "2"
SYMBOL "/home/phil/liveaxis/src/openaddress/src/plotting/icons/1.gif"

STYLE
COLOR 0 0 0
END

LABEL
MINFEATURESIZE 40
MINDISTANCE 150
POSITION UR
SIZE MEDIUM
COLOR 0 0 255
END
TEMPLATE "templates/MappingPlot/MappingPlot.html"
END

CLASS
EXPRESSION "3"
SYMBOL "/home/phil/liveaxis/src/openaddress/src/plotting/icons/2.gif"

STYLE
COLOR 0 0 0
END

LABEL
MINFEATURESIZE 40
MINDISTANCE 150
POSITION UR
SIZE MEDIUM
COLOR 0 0 255
END
TEMPLATE "templates/MappingPlot/MappingPlot.html"
END

HEADER "templates/MappingPlot/MappingPlot_header.html"
FOOTER "templates/MappingPlot/MappingPlot_footer.html"

END

Thursday, November 02, 2006

Setting the date on Linux

sudo date --set='+1 hours'

Tuesday, September 19, 2006

I am trademarking right now YouML! The idea is to create a yahoo google interface implemented in j2. Features are building applications from any ML.

Sqeezing Andromda 3 into Jetspeed 2 will help this effort.

What is a MDA?

An engine that enterprets the Universal Modeling Language (UML) and exposes a java datamodel to meta facades and templates.

What are meta facades?

Objects generated from a UML model describing a framework such as struts, ojb, jsf portlet, xml schema with xmlbeans, data backup and restore with ddlutils, etc. The meta facades describe aspects of the framework such as it's capabilities to display complex web interfaces.

This is one of the grey areas of Andromda. The default Cartriges don't generate jsf or struts only. But rather an Andromda developers framework or best practice for using such technologies. Anyway what's interesting is that the framework is yours to choose. But the reality is you have to write or modify Cartriges to achieve your MDA generated framework.

What is an object model?

An object model is a java model view to the framework.

What is an Repository?

The Repository is the underlying UML implementation. Eclipse Modeling Framework and Netbeans UML implementation are two examples of Repositories.

Getting familiar?

So the contents of the repository is the bizness inteligence, or process modeled in UML.

What is all this about?

It's about working fast! No, that's not true!

It's about thinking graphically. Developing in a graphic environment. Building bug free boiler plate code. You code the logic if you want. Configuration is achieved in the meta facades and object models. The user works with UML objects by assigning them stereotypes and tagged values which determine the framework implementation. That's enough for now. Try it www.andromda.org