I have had a look at CityEngine and am impressed -- it appears to live up to its billing from the ESRI UC in San Diego this past summer. I am running it on my MacBook Pro and have found it to be a bit slow. My first question is regarding hardware. What kind of specs would you recommend if I were going to write funding for one or more dedicated workstations, which would be used for creating models of larger sized cities (3 million +). I am not very interested in facade rendering or detailed design, but am more interested in mass modeling as it would be used in geosimulation from more of a quantitative analysis perspective (particularly with regard to land use agent activities/decisions). I was thinking to set up on something like a Mac Pro.
My second question is regarding ArcEngine and the JavaSDK. I've only had cursory exposure to both so far, but am very interested in integrating a package such as ArcEngine with statistical and demographic approaches to simulating and forecasting transportation decisions and land use activities. A fellow GIS colleague advised me earlier this year that I would likely do better going the path of the Java ArcObject SDK when developing discrete choice or multinomial logit models which are explicitly integrated into the GIS since there have been performance issues with Python.
Would someone please comment on the use of Python in ArcEngine, and what performance limitations one could expect when trying to integrate an existing transportation simulation platform with CityEngine as well as extending it to fairly rigorous statistical methods for forecasting land use.
Thank you, Dr. Tyler Frazier, AICP Department of Transportation Planning and Telematics TU Berlin
Let me with the area that I am most familiar with, namely the Java aspects of Engine versus using Python to write geoprocessing tools. There isn't a right answer for everyone in terms of which language to pick. In general I would say the following are true:
1 It's a lot easier to create geoprocessing tools in Python. This is true for two reasons. First, it's harder to implement the geoprocessing interfaces in Java than it is to write scripts in Python. Second writing ArcObjects code is generally significantly harder than calling geoprocessing tools.
2 You have a lot more power (you can access any ArcObject) through Java but this gap is dwindling as there are more geoprocessing tools covering the spectrum of ArcGIS functionality.
3 Performance can vary considerably depending on what functionality you are using. The general feedback I have received from people is that if you are writing a Java-based geoprocessing tool using ArcObjects it will generally outperform a Python script calling into tools. The performance difference can vary wildly - from having the same performance to many factors better.
I work with Java technology all the time, but my general recommendation to people is to try Python first unless you either know it's impossible, performance is of paramount importance, or you are already an ArcObjects expert. In general the amount of time you spend scripting in Python will generally be a small fraction of the time programming ArcObjects in Java.