NYGeog

Geography, GIS, Geospatial, NYC, etc.

Friday, January 11, 2013

2013 Goals

I recently listened to something on NPR about Making Resolutions Stick. It's important to write them out and to make them attainable. Here were my goals for 2012. Below is a short list of them.

1. Become more proficient with Python, especially the other modules, iters, calendar, etc.
2. Learn GeoDjango, learn it.
3. Learn even more about the Google Maps API and Fusion tables.
4. Utilize Dropbox more for non-sensitive GIS data.

Did I do them. Well #1 and #4 are definite yes's. #3 is true for the first half of 2012. Teaching and work got in the way of continuing to work on that but what I was able to do met that initial goal. #2 I never got very far with. I should have started with just learning Django, which might be hard enough on its own.

GIS and Career Goals:


1. Blog more. One thing I didn't do much of in 2012 was blog. So I'd like to do more of that. Tweeting and other stuff just doesn't help me cement in things that I've learned as well as blogging about it.

2. Learn MapBox - CartoDB

3. Utilize SpiderOak. A lot of the sensitive data I work with can't be uploaded to Dropbox so I need to use SpiderOak to keep the data encrypted and secure. Dropbox is a good place to store my basemap data and non-sensitive documents but is not good for sensitive data or banking data.

4. Encrypt all my drives (desktop and mobile) - we have to as part of IRB and new IT regulations, plus its just the smart thing to do.

5. Finish the Codecademy Python track. I'm 1/3 done I think now (they keep adding ones). At one point I was 1/2 done. Better finish before they add more!

6. Learn Django. From there learn GeoDjango.

Guitar Goals:


1. Learn at least the intro and a few minutes of YEM. 2014 I'll learn the 2nd half.

2. Sand the dark finish off my homemade lap steel guitar.

3. Clean up and reorganize my effects pedalboard.




Tuesday, August 21, 2012

Network Analyst and Geoprocessing in the Background

Well, I never used wordpress, oh well. Anyway, I realized as much as I like twitter and such, I still need to blog for my own documentation of ideas and GIS techniques.

So here it goes, again:

So the last day or two I've been running in to this problem with using Network Analyst for geoprocessing. It seems that running it in the background in ArcCatalog doesn't work but running in the foreground in ArcMap works fine (I'm running 10.0 SP5-maybe 10.1 fixes this).

I've avoided scripting Network Analyst functions for a while now but decided to make the leap. So after much frustration and reading the Esri forums (which are still annoying since the migration), I found out it will only run in the foreground. I'm getting some weird server error. So no big deal, just sort of a crummy workaround.


Wednesday, May 23, 2012

nygeog.wordpress.com

My newer posts may be found at nygeog.wordpress.com.

I’m migrating to WordPress for two reasons;

1) My research group is changing our website hosting from a paid web programmer’s server to WordPress

2) It’s just sort of interesting for me to learn something new!

Thursday, February 16, 2012

Python Code Block - Population Density (numerator zero and string to numeric)

Okay, so this morning, I've been dealing with two things. Well the first is that my ACS Census 2006-2010 conversion scripts create string fields for the variables. They should be numeric. I'll deal with that on its own. But this challenge was sort of interesting b/c it required two things. First off, I needed to calculate Population Density (per sq. km) but I've been having trouble with Python dealing with zero's (0) in the numerator for division when my added Field is non-nullable (I think if you add a field after the initial feature class creation you can't allow a field to be nullable, need to check on that though) and then converting and using a string value in my Code Block. I did a bunch of things wrong at first. My colleague's friend helped me figure this out over gchat by showing him my first code that didn't work. So thanks to him, though I don't know his name, but know he works at the EPA or did when my colleague was there. First off, I was only using a space, no comma in my Expression between !field_names!. Secondly, I noticed I needed to set my string equal using == rather than = or is. So here's the code that worked for me. Use it for Population Density Calculations just be sure to get rid of the float and the quotes if your Population variable is in fact numeric.

!B01003001E! is a string of the total population
!ALAND10! is land area in sq. meters (double)

Expression:

Calc(!B01003001E!, !ALAND10!)

Code Block:

def Calc(pop, land):
if pop == '0':
return 0
else:
return float(pop)/(land*0.000001)

Thursday, January 26, 2012

2012 GIS Goals

Welcome to 2012. I'm about 26 days late.

Anyway, I thought I'd use my blog (that I barely post to anymore because of twitter) to mark some of my goals for 2012. 2011 started slow, but this fall I delved deeper into my Python work and web mapping work with Google Maps.

1. Become more proficient with Python, especially the other modules, iters, calendar, etc.

2. Learn GeoDjango, learn it.

3. Learn even more about the Google Maps API and Fusion tables.

4. Utilize Dropbox more for non-sensitive GIS data.

It was hard to not automatically #hashtag every other word, weird. Anyway, good luck to everyone in 2012 and I hope your GIS wishes come true.

Tuesday, November 29, 2011

Shapefile to KML from OGR GDAL

Over the last few years there have been quite a few tools developed, including from Esri, that generate .kml files from your Shapefiles. They can be tough to use at times or easy but none are as satisfying as running from OGR GDAL at the command line. Why? Who cares, its just cool to be able to run things from the command line. Go here to follow Google's how-to:http://code.google.com/apis/kml/articles/vector.html



Go here at Google Code http://code.google.com/apis/kml/articles/vector.html and follow the easy steps. And then open up your new .kml in Google Earth.

Even later on you can customize more with libkml. http://code.google.com/p/libkml/

Tuesday, October 25, 2011

My first Stata command, summing two fields into a new field, why its easier than ArcGIS

So I barely use any software that's not GIS-related. Anyway, without making a list of the silly things that take forever in ArcGIS - at modelbuilder and even at python - (aka, deleting multiple fields for large datasets, took 8 hours last night!!!!), I've known I need to learn Stata to better manage my output files, so I requested Stata 12 and figured I'd share a little of my learning experience for my own reference but also in case anyone else is just starting out.

I'd like to start generating some calculated variables outside of ArcGIS. Some of my variables such as percent (PCT) of a population or densities could more efficiently be calculated outside of ArcGIS.

Here's how I've been adding a new field and calculating in ArcGIS:

I created model that has input parameters and allows the user to input everything they need to add a new field and calculate. It saves me just a little time by not having to add both models or type out all of these lengthy commands.

Here's the Python code:
# Import arcpy module
import arcpy

# Script arguments
Input_Table = arcpy.GetParameterAsText(0)

New_Field_Name = arcpy.GetParameterAsText(1)

Field_Type = arcpy.GetParameterAsText(2)
if Field_Type == '#' or not Field_Type:
Field_Type = "LONG" # provide a default value if unspecified

Calculate_Field_Name = arcpy.GetParameterAsText(3)

Calc_Expression = arcpy.GetParameterAsText(4)

Field_Expression_Type = arcpy.GetParameterAsText(5)
if Field_Expression_Type == '#' or not Field_Expression_Type:
Field_Expression_Type = "PYTHON_9.3" # provide a default value if unspecified

# Local variables:
Output_Feature_Class = Input_Table
Output_Feature_Class__2_ = Output_Feature_Class

# Process: Add Field
arcpy.AddField_management(Input_Table, New_Field_Name, Field_Type, "", "", "", "", "NULLABLE", "NON_REQUIRED", "")

# Process: Calculate Field
arcpy.CalculateField_management(Output_Feature_Class, Calculate_Field_Name, Calc_Expression, Field_Expression_Type, "")

Granted, there's Parameters instead of real values, but you get the idea, each of those parameters need to be filled out and all this code needs to run.

Here's the Stata code:

gen SUM_M11M12 = TRT_POPM11 + TRT_POPM12

That was easy!

Granted, this was only a numeric calculation, I still feel super confident about my Python/VBScript string 'skillz'[:5] + 's', but just saying, Stata is super fast and at the end of the day, those last numeric calc's might be best served in Stata.