Thursday, 11 January 2018

python - Generating multiple visibility bearings in ArcGIS as automated procedure?


As a relative newbie to GIS, I'm quite sure there will be a way to do this in GIS (probably most efficiently by writing a python script!) but (to me anyway) this is a fairly complex thing to do and I have no idea where to start. I know I am going to have to learn python and I'm happy to do this if it's going to allow me to achieve what I need. Here's what I'm trying to achieve (and this is not a one off, it will be a regular process, so if I can spend a bit more time at the beginning to automate as much of this as possible so much the better):


I have a shapefile of points, which are viewpoints in a particular area.


I then have multiple shapefiles (could be up to 50+) with other sets of points in each file (proposed development points,) each of which I want to buffer at (potentially different) distances (stored in the attribute table for each points file) to show different potential development extent for each.


What I'd then like to get out of GIS (I think using terrain / viewsheds info,) are the bearings from each point in the viewpoints shapefile, to the visible extents (left to right, i.e. 270-276 degrees) of EACH of my 50+ shapefile buffer files (note, not each point within each shapefile, just furthest left and furthest right from each viewpoint if possible?) The bearings would need to tangent the outer edges of the outermost buffers to show full potential extents, rather than just to the points themselves.


Also, to make matters even more complicated, I only want to give bearings of what can actually be seen? So if the furthest left point in one particular file is outwith the viewshed for that shapefile (I would need to run viewsheds for each of my 50+ files,) then the visibility bearings wouldn't include this, they would just go from the points that can be seen.



Finally, I'd need GIS to give me distances from each viewpoint to the nearest point of each development, so that would be the nearest point in each of my 50+ development shapefiles.


I have ArcGIS 10 with 3D Analyst extension.


Can anyone help? Does anyone have ANY idea if this is something that is realistic to achieve in GIS, or any tips in terms of how I can do this?


[EDIT]: Ok, so I realise that this is a complicated procedure, (though I'm pleased it seems to be doable!) so I'm splitting it into indivudual tasks, some I know how to do and some I'm sticking, but I think some of the sticking points are individual queries, so any additional questions while I work this out, I will link below...


Obtaining bearings to polygon extents in ArcGIS?


I'll also add some diagrams and further breakdowns as requested.



Answer



Fast process outline, with no tool links and some steps may need to be further broken down and any or all of it run as an iterative process in a model (or submodels):



  1. Generate viewshed polygons of all your viewing points.


  2. Generate development area polygon - concave hull your point clusters (not as simple as it sounds), buffer the points, possibly multi-ring buffer using your distance attributes mentioned - without seeing what the data looks like there's no way to suggest a particular point to polygon method.

  3. Intersect your viewsheds and development area polys to determine visible areas

  4. Determine lines from viewpoints to outer (and possibly inner) edges of visible area polys - your linked question. Note that you could have the same development area generate two visible polys if there is an obstructing hill in the middle.

  5. Get the bearings of those lines.


No comments:

Post a Comment

arcpy - Changing output name when exporting data driven pages to JPG?

Is there a way to save the output JPG, changing the output file name to the page name, instead of page number? I mean changing the script fo...