23/09/2012

Which is the best web mapping server for QGIS?



Apakah web mapping server terbaik untuk QGIS?

Soalan ini dah lama saya terfikir. Nasihat terbaik adalah syor OSGeo tapi itu juga ada beberapa opsyen. Pilihan saya adalah antara GeoServer, MapGuide Open Source (bukan MapGuide Enterprise) dan MapServer yang juga merupakan pilihan popular. MapServer mempunyai sejarah paling lama dan adalah rujukan utama seperti ArcGIS bagi desktop GIS. Perkara yang menarik dari fail pdf Jo Cook's Why web mapping?Why?How? menyatakan Goggle menggunakan GeoServer, MapServer dan Deegree, mungkin mereka tahu sesuatu. Saya tiada hasrat untuk membawa MapGuide Enterprise dalam perbincangan kerana ianya perisian berbayar. Saya juga tertanya mengenai pandangan perunding agar MapGuide Enterprise lebih baik dari MapGuide Open Source, mungkin kerana mereka tidak cerita sepenuh-penuhnya sebab:
  1. Ada udang disebailk batu.
  2. Sama ada klien akan betul-betul gunakan semua ciri MapGuide Enterprise.
  3. Adakah MapGuide Open Source memadai untuk memenuhi keperluan klien?
  4. Sama ada perunding  mahir secara teknikal untuk mengendalikan MapGuide Open Source? 
Saya tak pernah guna GeoServer, tapi mungkin tertaik dengan kaedah mesranya. Terdapat banyak post di Internet membincang perkara ini dan bersetuju ianya bergantung kepada  keperluan masing-masing. Dikatakan kalau nak kelajuan, pilihlah MapServer. Ada yang berkata pilihan programming akan mendorong ke pilihan mutktamad. Kalau OGC compliance adalah penting, pilih lah GeoServer. Saya masih mengkaji isu ini tapi buat masakini rasa terselamat dengan yang menurut garispanduan OGC. Beberapa pautan menarik adalah seperti berikut:

  • Comparison of the different open source GIS servers from stackprinter
  • Popular opinion from hiprank
  • Completely Brand New to GIS - Help picking technology from the pros from stackexchange 
  • MapGuide, Mapserver and GeoServer from osgeo
  • MapGuide or MapServer for Enterprise from stackexchange
  • Random Notes from Jason Birch
  • Benchmarking 2011 by OSGeo
  • gis,MapGuide or MapServer or any other open source GIS engine by mofeel

Which is the best web mapping server for QGIS?

This is a question that has been on my mind for some time. The best advice could be to take the recommendation of OSGeo but even so, there are a couple to use. My choice is between GeoServer, MapGuide Open Source (not MapGuide Enterprise) and MapServer which seems to be the popular options. MapServer has the longest history and I believe is like a reference standard as ArcGIS is to other desktop GIS. It is interesting to note from Jo Cook's Why web mapping?Why?How? presentation pdf file that Goggle uses GeoServer, MapServer and Deegree, maybe they know something better. I do not plan to bring MapGuide Enterprise into the scene because it is a paid software. I also question what  local consultants say that MapGuide Enterprise is better than MapGuide Open Source because I think they may be not telling the whole truth and nothing but the truth because:
  1. There may be something to gain.
  2. Will the client ever make use of most of the features from MapGuide Enterprise.
  3. Is MapGuide Open Source more than adequate to meet one's requirement?
  4. Does that consultant have the technical experience to handle MapGuide Open Source? 
While I have never used GeoServer, for some reason I do not know why, I have a soft spot for GeoServer, maybe I like their welcoming approach. Still there are many post in the Internet discussing this matter. I agree it boils down to user preference and requirement. They ('They' meaning the Internet ) say if it is speed and performance then MapServer has the edge. They say it's what programming are the you or your consultant is comfortable with so and that guides to your choice. Then they say if OGC compliance is preferred, well, GeoServer is the 'best'. I'm still researching on this but off hand I feel safer (and I believe, my top management) with those that comply with OGC, a non-profit organisation. Below are some interesting links:

  • Comparison of the different open source GIS servers from stackprinter
  • Popular opinion from hiprank
  • Completely Brand New to GIS - Help picking technology from the pros from stackexchange 
  • MapGuide, Mapserver and GeoServer from osgeo
  • MapGuide or MapServer for Enterprise from stackexchange
  • Random Notes from Jason Birch
  • Benchmarking 2011 by OSGeo
  • gis,MapGuide or MapServer or any other open source GIS engine by mofeel

17 comments:

  1. Hi Abbas,

    It is a surprise to know that a fellow Malaysian is so knowledgable in GIS! :)

    I am very new with GIS and I have a quick question:

    1. I am using QGIS currently, with PostGIS as my DB
    2. I have roads in malaysia added into my PostGIS.
    3. I have an excel file (CSV) with the source point (in geometry) and destination point (in geometry). I want to calculate the distance between these points (using the roads in malaysia as the path), and save the distance back into a column in a table.

    Can you give me some guidance? :)

    ReplyDelete
    Replies
    1. The term 'knowledgeable' is relative and I am but a newbie to someone more experience than me. Let me muddle my way through:
      1. transform the origin pt from csv to spatial using delimited text layer.
      2. do the same again for destination pt.
      3. merge both layers
      4. using the merge layer, use shortest path module for every OD but configure criteria for length not time
      5. I am not sure for this one but create a new column and put the measured distance in a row that represents 0D from one pt.

      If this works, you owe me 2 IKEA currypuff, my service charge :-D

      Delete
    2. Hehhee, sounds reasonable ;)

      Let me give that a try and I'll let you know whether it works! :)

      Delete
    3. hmmm.. how do i run the merge layers? :P it doesnt have the shortest path module as part of it... :O

      Delete
    4. It is obvious to me that you do not want to try out modules but want to be spoon-fed. In IT, you will never learn this way. Experiment and make it an adventure. Anyway, use geoprocessing tools/Union.

      Delete
  2. Don't get me wrong, I've been trying to use pgrouting the entire day to try to accomplish the same thing - to no avail.

    I'm a system engineer and I was told to pick up GIS for a customer's requirement.. Hence GIS is really not my core.

    Just needed some extra guidance on the right modules - it's too many modules in QGIS since it's my 5th day using it.. :)

    Anyhow, I really appreciate your help. Still working through it :)

    ReplyDelete
    Replies
    1. Maybe I was to harsh but myself too GIS is not my core, it's just a jizsaw puzzle for me, a game, sometimes I win, many times I lose. OK to help you out, all modules are under Fetch Python Plugins so user decides what user wants and downloads. Once downloaded, it may not activate and to do, that go to Manage Plugins, find the plugin you downloaded and select it, Some plugins then end up come under Plugins, Vector or Raster. It is not necessary to download, everything the ones you need. Delimited Text layer and shortest path came from there.

      Delete
  3. Pak Abbas,

    The title of your post talks about the "best web mapping server for QGIS." But reading your post about the various options, it seems to me that you're really talking about the various server options for taking the shapefiles (or other files) that QGIS can prepare for overlaying on a base map on a browser. For example, both MapServer and GeoServer use OpenLayers as their rendering engine. In GeoServer, since OpenLayers cannot render a shapefile directly, GeoServer (as I understand it) converts a shapefile (with its styling from an SLD file) to a graphic that can be used by OpenLayers to overlay on top of a base map. I have not had the chance of using MapServer myself. You can also use OpenLayers directly for making a web map, without using MapServer or GeoServer. But you have to convert the shapefiles you want to plot into formats that OpenLayers can understand, namely KML or GeoRSS. I usually make KML files from shapefiles that I have created and styled using QGIS.

    However, there is one option, which unfortunately I have not used, that can take a QGIS project (*.qgs file) directly and render it on a web browser. That option is the new QGIS Server, which seems to work best on a Linux server. The documentation for QGIS Server isn't very good, but in her blog, Anita Graser (Underdark) has shown how to install QGIS Server on Ubuntu (http://underdark.wordpress.com/2012/03/30/qgis-server-on-ubuntu-step-by-step/) and Windows 7 (http://underdark.wordpress.com/2012/04/06/qgis-server-on-windows7-step-by-step/). The beauty of the QGIS server is that you can upload a *.qgs file directly to the server, and it will convert it directly to a web map !!! I am trying to find the guts (and time) to try it on my Ubuntu 10.04 map server!

    Cheers!

    Howard

    ReplyDelete
    Replies
    1. OK my exposure to the next tier i.e. web GIS is still weak.I thought it was a norm for most GIS software to transform their defacto format to the .KML format to get it web gis but WOW! did not know the QGIS server renders it directly which makes it so juicy. However, I was told it is not so sophisticated like other established ones which I won't be surprised since it is fairly new but if it delivers then what the hell why not use it? It seems to synergize the qgis file all the way to the webgis level. I am still new on this subject so what things you tell here are very exciting.

      Delete
  4. Hi Abbas,

    2 questions:

    1. I'm trying to use shortest path, which is actually done from pgrouting (http://pgrouting.org/docs/foss4g2008/ch07.html#shortest-path-dijkstra-core-function)

    The Malaysia road that I have does not have a length (cost) field. however according to pgrouting, I need to have:
    length::double precision as cost

    Do you have any idea where can I get the Malaysia road shapefile with the length? or if length is optional, then how do I run the shortest_path function...?

    2. I remember that you asked me to merge both layers (roads and my points to calc the distance). However when I tried to merge them, i get "Merged layers must all be same type of geometry (point !=multilinestring). Googling didn't give me much direction..

    Help? :)

    Again, thanks :)

    ReplyDelete
    Replies
    1. I found this link that kinda relates to my #2:
      http://postgis.refractions.net/pipermail/postgis-users/2008-November/021893.html

      However, I tried running that in SQL, but it still doesn't allow me to export.. (SQL only showed me an empty cell on running that...)

      Delete
    2. >Do you have any idea where can I get the Malaysia road shapefile with the length?
      Federal roads:JKR HQ, State roads:JKR Negeri, Local roads: Local autorities

      >how do I run the shortest_path function...?
      1. Look up help under the shortest path module
      2. Google search "QGIS shortest path module"
      3. Alexander Bruy at GIS-Lab link under links

      >Help?
      Both layers must be configured to the same coordinate reference system you want or else one goes left, the other, right (figure of speech)

      Delete
  5. @Inner Me. Initially you say you added Malaysia road in GIS. I sure you can use the GIS to populate the road length attribute in the road layer...Looking at your last question, looks like you don't have a good road layer. You can try those Authorities suggested by Mr Abbas or you can download from openstreetmap - follow this link: http://downloads.cloudmade.com/asia/south-eastern_asia/malaysia#downloads_breadcrumbs
    After downloading, the road data may not suit your need because 'shortest path' demands good road geometry and topology. Unless this is a big project where you have a big budget, I suggest you just import your start & end points into google map and get the length from there.

    Cheers

    ReplyDelete
  6. Good post over there.

    However, if someone needs to show a 3d map, which web map server supports 3d mapping?

    ReplyDelete
    Replies
    1. I have not the privilege to own spare servers on my own eventhough if they were spare computers I could make believe they were servers so I could answer this base on hands-on experience. However, on condition that you have a map with x, y and z attributes stored in a RDBMS server such as PostgreSQL-PostGIS not a web map server then your 3D application in your desktop computer e.g. QGIS-GRASS could retrieve that data in 3D. The web map server functions merely extracts that data from the RDBMS server to allow you to see in on the web. If you wanted to see it remotely you would configure your computer to the IP address of the RDBMS server not the web map server. This is the way it works. Conceptually, it is possible to install web application and RDBMS in one server but it won't be efficient and we want things to run efficiently on the web don't we so that is why they are usually installed in separate servers.

      Delete
    2. You are totally correct there.

      Perhaps let me rephrase my question here.

      Assuming I have my map with x, y and z attributes in my PostGIS, what web application can I use to render it on an web application? I would like to be able to share it using a browser.

      Thanks!

      Delete
    3. Since you have PostGIS, I am assuming you are more interested in an Open Source option here. Frankly speaking, this is not my territory but nothing a Google search cannot do to help you out here. The_Open_3D_GIS_Project.pdf is a good paper (do a google search) telling the progress of 3D web-GIS and I'd go along it since it tinkers with MapServer, in fact, the software is even downloadable from http://sourceforge.net/projects/open3dgis/. I saw Glob3 at http://glob3.sourceforge.net/ as an alternative but then again, maybe what you need is GeoDove (do a google search for "geodove gis").

      Delete