This week we focused on working with geometries: reading geometries, working with multipart features and writing geometries. We got to work with the search cursor more but this time we worked with tuples which I found a bit more complicated when trying to print my script.
We worked with a rivers shapefile for this lab. Our first
task was to create/open a new empty txt file that could be written in. The goal
of this lab was to populate this text file with the name, x, y, coordinates,
OID and to number the vertices for each row of the features in the rivers
class.
We began with a search cursor. Initially when setting up my
cursor I was not putting the search variables in the correct order. I put “NAME”
first and when I tried to run my script I kept getting an integer error that
cleared when I moved it to it’s proper order in the cursor.
Once I got this sorted,
I kept getting errors when trying to print the “NAME”. I tried using the
getValue method that we used in the last lab to no avail. I kept getting an
error that the “tuple” object has no attribute “getValue”. I also tried setting
the NAME as a variable, like I did when I had issues in the last lab, but it
wasn’t successful. I looked in the exercises we worked on before this
assignment, but we never printed off any non-numerical variables, so I wasn’t
sure how to approach this. I knew it was a tuple and I noticed as I reviewed
last week’s script that last week’s search cursor was not so I tried variations
on ways that can call a tuple value, but they didn’t work. Finally, I referenced the documentation https://pro.arcgis.com/en/pro-app/latest/arcpy/data-access/searchcursor-class.htm and was able to print using the f’({})’ option they showed.
The goal was to populate a txt file, but to ensure I was
printing the information properly without having to open the file each time I
ran a matching print statement after my writing function. I focused on getting
my print statement to work correctly while leaving the writing function
commented out until I was ready to try to run it. When I finally got my print
statement to print appropriately, I tried to move it to my txt file. I simply
copied the entire parenthesis part of the statement and put it after my write to
file function. However, I received an error that only one argument could be
added. I was able to solve this by concatenating the individual statements as
opposed to using a comma. After doing this I was able to run the script to add
all the values that way, but my file was still blank when I checked to see if
it filled in the correct data. I re-read the chapter on this and realized I left
out my file “close” statement. I added the close statement, but I added it
within the “for” loop instead of outside of it. This led to a value error that was
resolved when I moved it outside of the loop. My txt file finally(!) populated
but at this point it looked like it didn’t have the OID and Vertex numbers. I
tried several options including str() before I realized it WAS giving me the
first two numbers, but it was leaving out the space between them and the
coordinates. I was easily able to resolve this by adding an extra space between
each item I wanted in the write to file. I did not need this space for the
print statement. It was very rewarding to see my populated text file.






No comments:
Post a Comment