Web viewSummary of Final Programming Project . My final project is to develop Python scripts of...

download Web viewSummary of Final Programming Project . My final project is to develop Python scripts of creating vacation home footprints in suitable land. I gain the

If you can't read please download the document

Transcript of Web viewSummary of Final Programming Project . My final project is to develop Python scripts of...

Helen PengGeo376 Final Project Report May 2010

Summary of Final Programming Project

My final project is to develop Python scripts of creating vacation home footprints in suitable land. I gain the project idea from the trip to the Smoky Mountains National Park. During the visiting, my friend talked about her dreamed vacation home in the beautiful mountain areas with road accessibility. I recommended GIS and Python programming could help her with selecting good sites for her vacation home.

The Python scripts are divided into two parts: one is to find suitable lands where can see rivers and access by roads, the other is to create footprints polygons in the suitable land. In the first part, it defines three functions. One function is to select proper roads and buffer roads with a certain distance. The second function is to run viewshed analysis for a stream data and convert raster data to polygons. The third function is to intersect road buffer and viewshed polygon, then select polygons with larger areas by calculating areas

The following is the detailed geo-processing: 1.1 RoadBuffer function:

Select major state highway roads, and buffer the selected roads to gain areas within a 150-meter road-buffer zone.

1.2 StreamViwshed function:

Use DEM and stream data to process Viewshed analysis to gain areas which can see the streams with good views. For the later process, it needs to set null and convert raster data to polygon. By running a SetNull tool, set null for not-visible data (value= 0) to remain all visible data. Using a reclassify tool is to eliminate polygon numbers. The final step is to run the tool of Convert to Polygons.

1.3 IntersectCalSel function:

Intersect the road buffer and viewshed polygon, calculate areas of polygons and select polygons with larger areas. The selected polygons represent the suitable land for vacation-home sites.

In the second part, the Python scripts reads centroids from the suitable land polygon and creates footprints polygons from centroids. In this process, two cursors are created. One is to read geometry features from the suitable land polygon, the other one is to create new footprint polygons. While loop is used to get each feature and an array is used to create a footprint.

I found several challenges during the project. The following is the challenges I had during the process.

1. To intersect road polygon with viewshed raster data, I needed to convert raster data to polygon and Set Null for raster data. While, I had some trouble with Set Null and asked our instructor, then got the idea on SetNull. In the data, visible data is more than 0 and not-visible data is equal to 0. By running a SetNull tool, the step eliminated not-visible data. Then I found there were hundreds of polygons and added one more step Reclassify to reduce the number of polygons.

2. The first part of my program derives mainly from Model Builder. I thought that all scripts from Model Builder should work fine. After replacing with different variable names, my scripts did not work. I could not find errors from my replaced variables and wonder what is wrong with my scripts. By communicating with Nate, I found that the Intersect code exported by Model Builder needs to run in Geo-database. Also, I found the below script runs well, which is not in geo-database environment. (see the below)

gp.Intersect_analysis(roads_buffer + ';' + viewshed_poly, x_Intersect_shp, "ALL", "", "INPUT")

3. I think it is another challenge to create footprints polygon by reading centroids from the suitable land polygon. When my scripts read a centroid (x,y) from a polygon, the value of x is negative, and the program can not work on the script (llx = 100 -x). The error message says-- unsupported operand type(s) for -: 'int' and 'str'

Suggested by Nate, llx = 100 - float(x) works. Thus I can get the right coordinates in the text/excel file. To get more accurate x,y data, the below scrip works better.

#split a string, get x,y values

ctr = centroid.split(' ')

x = float(ctr[0])

y = float(ctr[1])

4. Additionally, my program appears x= -83.xxxx. I learned from Nate that degree represents the area in USA and West of the Primer Meridian. As California is about -121degrees (or 121 degrees West) of the Primer Meridian. And the site that I selected for the project is Smoky Mountains, TN, so x= -83.xxxx.

5. Data collection is an important step at the beginning of the project. The basic data for this project is DEM data, roads shapefile, and river shapefile. I found DEM and roads data from USGS but could not find river (hydrology) data. I searched on states, cities, parks government websites, and others, but I could not find any data. After searching for a while, I found at the University of Tennessee website. I learned that geo-data can be available at college websites.

The project is eventually accomplished. The process of solving program problems is the process of learning. I enjoyed the time on running the program and figuring out the issues. I would also like to share my result with my friend who is dreaming the vacation home.

2