Serving Maps for Free

The Goal

This weekend I started down the road to fulfilling one of my New Year Resolutions: Get some maps online. And by maps online, I don’t mean posting links to KML files, screen shots, or PDF exports from ArcGIS. I mean full-fledged interactive maps viewable by anyone with a browser. On top of that, I had one more goal. I wanted to do this with as little extra cost to me as possible. This is going to be a learning experience for me, not a paying job.

The Map Server

I’ve put a lot of thought into this. It’s something that’s been on my mind for a long time, and I’ve looked into a few options. Choosing a map server was relatively easy. There appear to be three major players in the map server arena. ESRI’s ArcGIS Server, GeoServer, and MapServer. There are others mentioned on Wikipedia’s Web Map Service page, but these are the three that seem to be discussed most often.  ArcGIS Server was out of the question for obvious reasons. Thousand$ of obviou$ reason$. GeoServer and MapServer are two Open Source options, but GeoServer seems to be the more popular option among the open source crowd. I’m not one to pick an option basedGeoServerStatus solely on its popularity, but in this case, popularity also means more discussion in the forums, which in turn means it’s easier to find a solution to any problems that might arise during my own learning process. So, GeoServer it was. You can download GeoServer directly from GeoServer.org, but I decided to go the OpenGeo Suite Community Edition route. What led me to that decision was their great White Paper on The OpenGeo Architecture, which is the most concise, easy to read explanation of how all the pieces fit together that I’ve found anywhere on the web.

The Web Server

The most difficult decision in this whole process was how to host this beast. Yes, I know, I could just install GeoServer on my laptop and play with it there, but I wanted to make these maps public. Isn’t that the whole point of a server, be it geo or otherwise? I have been looking at Amazon Web Services, and signed up for a AWS Free Usage Tier account when they started offering them. The problem with AWS is, it’s just so darn complicated to get IIS7Managersomething set up. I am getting better at finding my way around there, but I still get lost once in a while. Plus, the free accounts require using a Linux operating system. I’ve been experimenting with Ubuntu at home, but I’m much more comfortable working in a Windows world. And Windows usually means paying for cloud computing space (e. g. $58/month at Rackspace). If you’re interested in looking at the AWS option, I highly recommend you take a look at what @spara has done: Install GeoServer on Amazon EC2 without leaving the browser.

The Home Server

I decided to merge this project with another I’ve been thinking about for some time now: setting up a home-based web server. I have an old Dell 600m laptop that’s just taking up space in my office. I have an extra copy of a Windows 7 Home Premium upgrade disc that comes with IIS7. Both were essentially free (to me anyway, your costs may vary). MyHomeWebServerThe only unknown was, would I be able to open this up for public viewing? The main roadblock to setting up a public server using a home internet connection is the use of dynamic IP addressing and port blocking by some (most?) ISPs. I was able to work around both of these obstacles by using DynDNS’s services, and setting my router and software settings appropriately. I wont go into the intricacies here, but if you do a Google search on either of these terms, a wealth of information will flood your browser.

the steps I followed to get things up and running:

  • Wiped the hard drive on the Dell 600m laptop clean
  • Installed the original XP OS, and then the Win 7 Home Premium upgrade
  • Installed all updates through Windows Update
  • Downloaded and installed the OpenGeo Suite
  • Played around with GeoServer and GeoExplorer enough to get a basic map embedded on a web page
  • Got a free Dynamic DNS host name at DynDNS.com
  • Installed DynDNS Updater
  • Modified my router settings to make sure the proper ports were open and forwarding to my laptop server
  • Tested, changed settings, tested, changed settings, tested, tested, tested
  • Scratched head, changed settings, tested, swore a few times, had a beer…
  • Installed and set up Internet Information Services (IIS7)
  • Set up a website using the web page with the embedded map I made with GeoServer/GeoExplorer
  • Went through the whole “testing-scratch head-drink a beer” routine again
  • Celebrated the results

Here’s a snapshot of the results on day 1:

Don's GeoSandbox RC1

And a Link to  what it looks like now:

Don’s GeoSandbox

I’ll try to keep this link up-to-date, but this is all a test, and it is running on a home computer, so don’t be surprised if it’s not available 24/7.
Some of you that have seen this before this post asked the question”Great, but where’s the data?”
Well, that’s coming. Please be patient with me people :-). Baby steps. Baby steps.

Addendum 01/12/2011

I now have a few shapefiles uploaded and viewable on the site. Next step will be to dress up the web page a little bit.

Reader Comments

  1. Nice to read a concise account of how to get started. The great thing about GeoServer is that it is totally standards compliant.

  2. ”Great, but where’s the data?”
    Every time I’ve done a similar project, this is the question that brings me up short. When it’s all said and done, I find that I don’t actually have any data that I’m willing to make public and that isn’t already being served by someone else.
    I have to admit, though – the project is a lot of fun just for its own sake.

  3. At first, I found myself in similar situations as Terry but, over time, I have found uses for such a small-scale, personal setup.
    The common use for me is development and testing. Many of my customers develop in closed labs before deploying to public networks. The OpenGeo Suite fits well here because it is comparitively lightweight and, as Gretchen points out, standards compliant. Many of my customers are using ESRI clients to consume data. I can’t really call a test valid if I’m using ESRI clients to comsume WxS from ESRI servers. This kind of setup helps with that as well.
    We’ve also made use of the OpenGeo suite to support mapping for some customers. We can deliver finished maps (even as PDF for those that want it) and also data and such.
    I could go on but I have found the OpenGeo stack valuable even in situations where I’m not pushing a lot of data. I wish you much happy tinkering, Don!

  4. Congratulations are in order for such a fruitful weekend, Don! I’m sure the beer had much to do with it.
    I first started exploring GeoServer a couple of years ago and got serious about it about a year ago. My first major deployment of it was to use it in our main public-facing app. I’m generally happy with the results, although I do think cartography is an area in which GeoServer (and open source GIS in general lags). SLD is flexible but cumbersome.
    I’m currently working on a “clip and ship” application in the cloud that leverages GeoServer’s WFS output formats. This is functionality that’s perfect for this type of use case.
    Since this is my first jaunt into GeoServer running in Linux, it’ll be interesting to see how things go.
    http://docs.geoserver.org/2.0.2/user/services/wfs/outputformats.html
    Keep us posted on your tinkering!

    1. Hi eb-
      I must disagree with your thoughts re: ArcGIS.com. I’ve visited the site many times, and while it’s probably useful for some purposes, it’s not a very useful solution for me. Mainly because of this note found in the Help >
      Note: Only ArcGIS Server map, image, and feature services can be added to the map. Other layer types, such as layer packages, are not supported at this time.
      Until such time that ArcGIS.com can load my custom shapefiles and/or geodatabase features, I have no use for it.

  5. Don,
    The selection of Geoserver appears to work well for you. It definitely has more GUI support for management, but I wouldn’t say that it is more popular than MapServer.
    David.

    1. Thanks for the comment, Dave.
      Yes, I shouldn’t say GeoServer is more popular overall, as I really don’t know that. But it does seem to be used more, and comes up in discussions more often by the GISers in my circle of friends.

  6. I think an important question is for which projects do i need ArcGIS Server, GeoServer, and MapServer.
    We see in our daily work that most projects of our customers are small. Server technology is often oversized.
    So our approach is to mix statical data (geometries saved as SVG) and data coming from a server (web services like WMS, Tiling servers etc).
    You can have a look on some examples on our homepage http://www.mappetizer.de/en/examples

  7. Enjoying a nice beer to celebrate my first Geoserver Map thanks to your excellent instructions!! – I almost gave up when I looked at Amazon Web Servers but followed your example and followed the dynamic DNS route instead and used Abyss Web Server – throughly recommend
    Keep Posting – you are an inspiration 🙂
    Steve – Oxford, UK

    1. Great Steve, and thanks. Send over your wms url when you get everything set up, and I’ll test it out over here. Good luck.

  8. Nice report. I tried the same thing using Windows 7 Home Premium and Geoserver. While I got everything else working pretty well, I got stuck on setting up a proxy. Geoserver will serve maps to my localhost but I can’t seem to get it to serve to another computer on the network (either internally or on the internet). I can serve my web site just fine. I must be missing something and a proxy seems the most likely.

    1. Hi Jack –
      You shouldn’t need a proxy just to serve maps through GeoServer. I didn’t need one until I started trying to write a custom app with GeoExt. If you want, send me your wms/url, and I’ll see if I can load it up on my end.

  9. Nice work! I’m just curious if you were able to run GeoExplorer under IIS7 with this setup? Or you simply embedded the map inside a static page served under IIS7 and its still Apache Tomcat thats serving GeoExplorer?

    1. Hi Angelo –
      Yes, I’ve used the entire OpenGeo Suite (including GeoExplorer) in both Windows/IIS and Ubuntu/Apache environments. Both work great, although the set-up is a bit different. Once installed, the interface is nearly identical.

  10. Hi Don
    I really admire your approach towards building your GeoSandBox!! Awesom.
    I have some questions. I am a student and currently have a two months project to build a web gis application to serve some health facilities location data via the web. The objectives of the application are as follows:
    a) To allow the user to view and to create maps of health facilities with roads, administrative boundaries etc depending on their layers of choice.
    b) To allow the user to view data attributes for health facilities, roads, census points for population and administrative boundaries.
    c) To allow the user to overlay the different available data layers to see spatial relationships.
    d) To allow the user to perform simple queries based on data attribute e.g. all health centers managed by the churches or all roads that are sealed.
    My question is, do you think it is possible to build such an application using the OpenGeo Suite? or if you know of any other configuration that can work to generate these user desired functionality?
    Thanks in advance and i look forward to hearing from you soon!
    Kara

Comments are closed.