A Few of My Research Publications

When I was at the USGS I did a lot of research and published several papers.  Now that I have my own website, I figure I can put them online now.  Here’s the first list of papers.  Some of them are final versions of the open file reports, others fell between the cracks when I transferred from the USGS to NGA.

  1. A New Method of Edge Detection for Object Recognition
  2. A Parallel-Processing Approach to Computing for the Geographic Sciences 
  3. A Parallel-Processing Approach to Computing for the Geographic 

    Sciences: Applications and Systems Enhancements

  4. Directed Edge Detection – A New Method for Identifying Objects in Imagery
  5. Distributed Processing of Projections of Large Datasets 

    A Preliminary Study

  6. Extending Beowulf Clusters
  7. A Distributed System for Fast Reprojections of Geospatial Data for 

    The National Map

  8. Model Development and Extraction from Neural Networks 

    Final Report

  9. Processing Large Remote Sensing 

    Image Data Sets on Beowulf Clusters

  10. Using Mosix for Wide-Area Computational 

    Resources

  11. Beowulf Distributed Processing and the United States Geological Survey
  12. An Intelligent Systems Approach to Automated Object Recognition 

    A Preliminary Study

OK, I’ll Give Microsoft Credit

They’ve come a long way from the “bad old days” of doing GUI apps with MFC under Visual C++ 6 where you had the wonderful “black box” message framework you weren’t supposed to touch but always had to anyway.  I managed to make a GUI app today with Windows Forms to read data off a CAC card so I don’t have to keep relying on the command-line driven app I wrote for testing a while back.  No black boxes, no hand editing message maps, no hand driving message pumps to get things done.  And the cool thing is it might run under Mono too.

While I still prefer Qt for most everything, Visual Studio now isn’t bad for the times I have to write source under Windows.

Hello!

Welcome to my new blog.  I got tired of Blogger/Google and now that I have my own domain, well, it’s time for a change 🙂  I’ll be filling more here soon.

Changes, They Are a Comin’

I’m going to try to start posting more here I think.  I’d like to get more into blogging (even podcasting).  This blog will keep its theme, just hopefully more content 🙂  I’m working on a long series of posts about using GIS tools and data since that’s still near and dear to my heart.

I’m also going to keep posting other technical things of interest here as time permits.  I want to get into reviews and discussing technology as well.

Stay tuned!

Fun with OpenStreetMap and Open Source

So as part of my pushing OpenStreetMap to people, I made some sample screen shots for a friend of mine who is wanting to move away from paying Google for their maps.  Thought I’d share in case other people want to see what’s possible using OpenStreetMap data for rendering.

For my setup, I have PostgreSQL/PostGIS running on a server here at home.  In it I’ve imported:

On top of that, I’m also running the Geoserver 2.2 beta to provide all of the data as a WMS, WCS, and WFS OGC services.  The OSM data was imported using the excellent imposm tool.  I used the styles from OSMinaBox for WMS styling with some additions I made to the SLDs to make sure additional features were rendered.
The following screen shots are samples I’ve made using some of this data.  I threw them together for Doug so didn’t really do any tweaking to label placements and the like. 
Screenshot 1 – OSM overview
In this screen shot, I used the US Tiger 2011 Counties data set for the background layer.  Plus it helped me to locate and zoom into my areas of interest.  The OSM* layers are all WMS renderings from my local Geoserver install using the above-mentioned SLDs.  OSM_Roads is actually a database view that imposm makes with all of the road layers merged together.
This second screenshot is zoomed in a level so that Geoserver does more labeling based on the SLD rules.
Screenshot 2 – Zoomed in example
On this third screenshot, I overlaid the USGS GNIS file with my own rendering rules inside QGIS.  I basically used SJJB icons under QGIS to make GNIS look a little nicer.  However, the bluish-green dots show I’m still not done with the style in QGIS and once it’s done there I’ll move it over to Geoserver to do the WMS rendering there as well.  
Screenshot 3 – GNIS overview
Here’s my quick post for now.  Just wanted to do a quick showing of how you can make decent looking maps from completely free data.  I apologize in advance since I have no artistic skills whatsoever though 🙂

A Random Post: Am I on a 32- or 64-bit OS?

So in response to a question on IRC this morning (and it’s early and I’m not fully awake), here’s a quick program I wrote to show how to detect if you’re on a 16-, 32-, or 64- bit OS by checking the size of an int* in C/C++:

#include


int main (int argc, char* argv[])
{
  int foo = sizeof(int*);
  
  switch (foo)
  {
  case 2:
    std::cout << "Size = 2: 16 bit OS" << std::endl;
    break;
  case 4:
    std::cout << "Size = 4: 32 bit OS" << std::endl;
    break;
  case 8:
    std::cout << "Size = 8: 64 bit OS" << std::endl;
    break;
  default:
    std::cout << "Size = " << foo << std::endl;
  }


  return(0);
}

My Latest Odd Project

So since the USGS is releasing a bunch of their old scanned paper maps at their Historical Topographic Map Collection, I thought it would be interesting to take the GeoPDF‘s there and georeference them to GeoTIFF‘s to compare to modern maps.  I’ve always had a thing about history, so thought this would be a fun side project to get my cartography back on.

Since QGIS doesn’t yet import GeoPDF’s, I’m first loading them into the GIMP (at around 300 dpi from the PDF), clipping the collar out, and saving them to a LZW-compressed TIFF.  Then I’m importing the TIFFs into QGIS and using the Georeferencing plugin to mark the grid points on the map.  I’ve read that the old maps were based on the Clarke 1866 ellipsoid, so in QGIS I’m setting the source projection to NAD27, which is based on Clarke 1866.  Yes, I know that technically this isn’t fully correct in the cartographic sense, but then again georeferencing old paper maps like this also won’t exactly put out a highly accurate GIS product either 😛  I’m outputting them to WGS84 from the georeferencing plugin.  Times on my older Dell E1705 are around 5 minutes doing a polynomial interpolation with Lanczos interpolation.  Then again, I remember back in the mid to late 1990’s when DRG production at the USGS on the old Data Generals would take a whole lot longer, so I wasn’t going to complain 🙂

The output isn’t so bad really.  Here’s a sample of the output draped on top of Yahoo Street Maps (Google Maps and reprojection on the fly doesn’t seem to work so well in QGIS right now).

Setting the Fredericksburg 1889 map to 50 percent transparency in QGIS and zooming in to old town, you can see that the map fits to a modern map surprisingly well.

I’ll probably play around with this some more and maybe upload the georeferenced maps to archive.org or something along those lines.

Fun With Verizon

So we had an odd outage here at the Maddox house.  Internet quit working.  Phone quit working.  FIOS boxes couldn’t access the Internet either (tested On Demand, Widgets, etc).  So I called Verizon tech support.

Me: Yeah, everything except for the television video stream has quit.
Tech: Have you changed anything on your router?
Me: Not for about a year now.
Tech: Let me run some tests and check.  Oh I found the problem, your wireless on your router was turned off.
Me: Yeah, it’s been off for about a year now.  I’m using a Wireless N router.
Tech: I turned your router’s Wireless back on.  Did that fix things?
Me (thinking): WTF?  The wireless has been off for a year and why would that affect the FIOS boxes and phones anyway.
Me: Nope.  Maybe you should reset the equipment here?
Tech: Well, let’s see if turning the wireless on fixed things.
Me (beating my forehead so hard I made it flat): Um, ok,

Quick VNCViewer Tip

Yes, yes I know this is insecure so shush 🙂

You might know that vncserver on UNIX boxes pretty much requires you to set a password for logins.  If you’re on a secure system or just don’t really care, it’s pretty easy to write a shell script to log into such server without prompting you for a password:

echo “yourpassword here” | vncviewer “your options here” -autopass host:whichever screen you used

The Case of the Broken OpenGL Extensions

Like a good boy I did my apt-get update / apt-get upgrade the other day and thought everything was ok.  It pulled down some x.org updates and a new nvidia-current (yes, running Ubuntu with some development ppa’s).  Upon rebooting I noticed compositing in kwin had stopped.  I thought maybe the sequence of updates had messed something up because there was one xorg update that came in after nvidia-current. 

So I ran glxinfo and log and behold I had no GL extensions whatsoever.  Hrm, this is a problem I thought.  I also ran nvidia-settings to see what it said and the OpenGL tab also said nothing was there.  Did a quick web check and no one else was reporting problems with the version of the nvidia driver I had.

I then did a quick ldd `which glxinfo` to see what was up, thinking that one of the xorg updates might have sneaked in some mesa configs.  Sure enough, glxinfo was pulling libGL.so from mesa instead of the nvidia binary.  I looked in /etc/ld.so.conf.d and found a i386-linux-gnu_GL.conf file that indeed placed mesa in ldconfig’s path higher than the nvidia one.  A quick rm i386-linux-gnu_GL.conf and restarting of X fixed things.

The moral of the story is, if you’re like me and have the xorg edgers ppa installed and have suddenly lost OpenGL acceleration, check your /etc/ld.so.conf.d dir.