Hot answers tagged programming
16
Fortunately for you (and all of us!), there are plenty of available (and mature!) options in the FOSS4G world!
Following your technology preferences here's some examples:
Python
Mapfish
GeoDjango
PHP
PMapper
pure Javascript
OpenLayers
LeafLet
OpenLayers + ExtJS
OpenLayers + Jquery Mapquery, jeobrowser
For a more complete reference please visit ...
13
Probably not.
None stand out.
Your time would be much better spent learning Django/GeoDjango. Django is similar to Rails in that it's a web application framework. It uses Python rather than Ruby. The geospatial functionality is much more mature than GeoRuby.
Ruby/Rails is a great platform to develop on but the spatial functionality isn't on par with ...
12
There is one blog post from Michalis Avraam that explains essential skills to succeed in GIS career which I think is well written. You will probably find lot of good advices there.
10
I like Chris Garrard's Python for Geoprocessing course materials. http://www.gis.usu.edu/~chrisg/python/2009/ Personally, I find programmatic manipulation of OGR/GDAL to be indispensable.
With respect to finding the best fit for you, consider the software or geostack you wish to be most expert in (like ArcGIS, QGIS, PostGIS-GeoServer-OpenLayers), and then ...
10
Although this isn't really the direct answer to your question, qgis acts as a relatively simple GIS viewer which can access PostGIS. In addition to the main application -- which is a relatively complex piece of software -- the core of the qgis library can be 'pulled out' and used from an application written in C/C++ or (I believe, with some work) Python.
...
10
You dont need to program to do this - you just need a desktop mapping package and your data in a standard format.
Standard formats include shapefiles for points, lines, and polygons, and geoTIFFs for raster (gridded image-type) data.
I use the Open Source Quantum GIS, but there are other Open Source applications. Commercial GIS applications will be way too ...
10
If you've got an GDAL/OGR dev environment (headers, libs), you could radically simplify your code by using Fiona. To read features from a shapefile, add new attributes, and write them out as GeoJSON is just a handful of lines:
import fiona
import json
features = []
crs = None
with fiona.collection("docs/data/test_uk.shp", "r") as source:
for feat in ...
9
ESRI have a heap of videos, and I think these are the best resources to get started.
I would recommend looking at the ESRI Developer Conference videos
At time of writing, 2010 is the latest
A Developers Guide to ArcGIS Server
A Developers Guide to ArcGIS Mobile
The ESRI Development Process
Intro To ArcGIS Desktop Add-Ins
Each of these videos conclude ...
9
First question: how much of this are you doing in Python? Are you just calling out to Geoprocessing tools or are you doing a significant amount of numeric analysis in Python? If the former, the bottlenecks likely live in the tools and using native code in your script won't buy you as much as some other clever workarounds. If the latter, then you may want to ...
8
Don't start with C++ and GIS without learning software development first. It's just too much.
Python is a good place to start regardless of what GIS platform you go with later. There are a lot of books, websites and training materials available and a lot of colleges use python as an introduction before going on to the heavy duty programming languages, like ...
8
Using Fusion Tables and Google Maps you will be able to keep track of your campaign
Topic Spotlight: Communicating demographics: Examples
https://sites.google.com/site/fusiontablestalks/stories
Fusion Mapper will give you a head start:
http://earth.google.com/outreach/tutorial_fusion_yourowndata.html
7
Here are few resources to get you started.
http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#/Building_add_ins_for_ArcGIS_Desktop/0001000000w2000000/
http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#/Walkthrough_Building_custom_UI_elements_using_add_ins/0001000001ms000000/
...
7
The GRASS command r.profile performs this (documentation, source) and should provide a good basis for implementing a cross section, and is available under the GPL.
7
Strictly from a learning perspective, learning something new is always worthwhile. However, Ruby/Ruby on Rails isn't extremely popular in the GIS world. Because of lack of popularity, I would suggest you pick up another language instead, such as Python, if your goal is to learn something new. I don't think you'll find any GIS-specific advantages to ...
7
i am currently developping a rails app with some mapping capabilities, and i really love ruby and RoR, but sadly enough there is very little plugins mature enough for a complex WMS/WFS service.
But i just want to add that the recent rGeo library does quite a good job with projections (proj4 bindings and ability to use other APIs), integrates smoothly with ...
6
I've attended two ESRI UCs and got to go to the ESRI Dev Summit in Palm Springs this year. If you are drinking the ESRI Kool-Aid, then the Dev Summit is your best bet over the UC, in my opinion. Everything at the Dev Summit is developer-centric. Code everywhere. ESRI engineers everywhere. The engineers are at the UC as well, but not in such a massive ...
6
In general this shouldn't be a problem but there are some objects in the ArcObjects library that you want to be very careful about managing their lifetimes so that you don't tie up critical resources or keep locks on database tables for extended periods.
Among lots of other good info, in this thread James MacKay lists some of the types of objects you should ...
6
You have to use lyr.SetFeature(i) to trigger the update in your shape file.
You'll have to close the data sources in the end so things get written.
import sys
import ogr
ds = ogr.Open( 'tttttttttt.shp', update = 1 )
if ds is None:
print "Open failed./n"
sys.exit( 1 )
lyr = ds.GetLayerByName( "tttttttttt" )
lyr.ResetReading()
field_defn = ...
5
VS2010 adds support for .Net 4.0, so if you what to use new .Net 4.0 features in other projects choose VS2010. But for ArcGIS 10 projects you are forces to use .Net 3.5, so for those projects it does not matter right now. Place a vote here if you want ArcGIS to use .Net 4.0
5
The O'Reilly Where 2.0 conference is a bit on the expensive side, but has a decent spatial developer turnout. It happens in late March each year.
If you're going to be working with ESRI software, then the ESRI User Conference is the place to be. 2008 claimed 14,000 attendees, representing a good swath of both their user-base and developers.
5
It is inefficient to be looping over the entire grid for each shapefile. You can take advantage of the regular structure of your grid to speed up the processing tremendously: from the coordinates of a feature's centroid you can mathematically compute the identifier of the grid cell in which it falls. Output a tuple of this identifier and the feature's ...
5
If you are interested in Open Source projects, you'll find the answers to this question helpful: What are the FOSS equivalents to these ArcGIS products?
There are quite a lot of different options how to build an OS web mapping stack. Without knowing your use case it's a little difficult to suggest one over the other.
5
If the map units are in any sort of projected coordinate system, taking input in meters, miles, or beard-seconds should be relatively easy. If the map units are geographic, you probably ought to project them for an operation like this anyhow to make your algorithm easier (the problem with geographic coordinates is that north-south degrees are not the same ...
5
If you want to finecontrol / test this deeper, outside what any framework (jquery/dojo) has to start this. You could try this little library:
var stack = [],
interval,
loaded; // has window.onload fired?
function doPoll() {
var notFound = [];
for (var i=0; i<stack.length; i++) {
if (document.getElementById(stack[i].id)) {
...
5
I would consolidate all of those dojo.addOnLoad() calls. I suspect something isn't getting loaded before a function is getting called.
Strip all dojo.addOnLoad calls from all of your external javascript files and bundle them into one call in your main HTML file. Put all the functions you want to fire on load into a new function at the bottom of your ...
4
I was able to learn Python by sitting down with a copy of Learning Python by Lutz & Ascher (O'Reilly Press). My office uses ESRI products, so to get the connection with ArcGIS, I created several models using ESRI's Model Builder and exported them to Python. Then it was just a matter of looking at the exported python scripts, digging through the book ...
4
Just wanted to add a bit from my personal experience. I learned mainly as a by-product of employer needs. First with ArcGIS Desktop scripts, then extensions, then ArcGIS Server (SOE, Web ADF, and web API) programming. The best resource, in my opinion, was really the API and help documentation. When first breaking into an unknown area, I would read a bit ...
4
Existing code (in addition to the other answers...not in place of).
There's lots of it online in places like Google Projects, Codeplex, & Github.
It's interesting to learn from code for projects that are fairly active/in use and have a decent size user community. (Not that you can't learn anything from stale code repositories)
4
Personally I'd use the Python bindings for the Proj4 library - http://pypi.python.org/pypi/pyproj/1.8.6
Further details at http://pyproj.googlecode.com/svn/trunk/README.html
You can pass your projection parameters directly to the projection object as follows:
PROJ_32756 = """
+proj=utm +zone=56 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs
"""
p1 = ...
4
If you do need to program an application in java you might want to consider GeoTools which is a Java toolkit for handling GIS data. UDig (on the OSGEO Dvd too) and GeoServer both use GeoTools. Depending on how you store your data GeoTools may have a datastore that will connect with it directly (shapefiles, databases etc) or it's not too hard to write your ...
Only top voted, non community-wiki answers of a minimum length are eligible
