ArcGIS Engine

From Wildsong
Revision as of 17:50, 19 March 2012 by Brian Wilson (talk | contribs) (→‎What is it?)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search


What is it?

Scenario. You have a $1500+ ArcGIS Desktop license and you develop a product based on ArcObjects, the core of ArcGIS Desktop. You cannot sell it, because your potential customers are put off by the high cost of an ArcGIS license.

So you instead build the product to run with "ArcGIS Engine".

ArcGIS Engine is essentially the core of ArcGIS, It's "ArcObjects" without the desktop applications ArcMap and ArcCatalog. It costs about $500.

To deploy an ArcGIS Engine - based application to a machine that does not have ArcGIS Desktop installed on it you include the ArcGIS Engine Runtime in the deployment.

There are also extensions for the runtime corresponding to the ArcGIS Desktop extensions. These include Spatial Analyst, 3D Analyst, Network Analyst, and Geostatistical Analyst. I am not sure of the cost of the licensing for the extensions.

Alternatives

To avoid a per-seat license fee you could use ArcReader. It's free, and you can actually go a long way with ArcReader based apps. The real problem with it is that you have to use PMF files and the only way to create a PMF is with ArcGIS Desktop ($1500) plus the Publisher extension ($2500) so suddenly "free ArcReader" does not sound so hot.

My maps are too slow!!!

My labels blink!!

The problem: When I have the GPS tracking my location, all the labels on my map blink 1/second. This is REALLY ugly.

Try these things:

Remove address label expression. I just checked our MXD and it had this:

function FindLabel ( [ST_NUMBR], [ST_NSFX], [ST_UNIT] )
{
 str = [ST_NUMBR];
 if (!([ST_NSFX] == "" || [ST_NSFX] == " ")){
   str += " " + [ST_NSFX];
 }
 if (!([ST_UNIT] == "" || [ST_UNIT] == " ")){
   str += " " + [ST_UNIT];
 }
 return str;
}

This is a VBA program, that means it has to run for EVERY visible address label. This is slow. Create a "label" column, run this in a "calculate field" operation. Use the "label" column to label the feature.

Use "label classes"?

On Ubuntu Linux

Roughly steps I took to install 9.3.1 on Ubuntu

  1. Build CentOS 5 virtual machine and install 9.3 there; including SDK's.
  2. Install update to 9.3.1
  3. Copy the files to Ubuntu
  4. Create an ESRI.properties.`hostname` file from the one created on the VM
  5. Install csh libg2c0
  6. Create a script that mimics 'arch' (see below)
  7. cd arcgis
  8. Run authorizeSoftware script; discover that the software will not run on a 64 bit installation.
  9. Move everything to a machine with a 32 bit architecture. Scowl, grimace.
  10. Run auth script again. Works this time.

Create the /etc/ld.so.conf.d/arcgis file

Environment settings

export MWHOME=~/arcgis/vmw/mw
. ~/arcgis/python25/setenv_python.sh

arch script

cat > ~/bin/arch
echo i686
exit 0
chmod +x ~/bin/arch

Not going any further down this path

I almost got things working, but then I read the licensing agreement. It's so restrictive! What's the point of putting it on a Linux box if I can't use it the way I want to?

Trekking now back to the open source world.