Im trying to do this and stuck
- Take a JSON string with address and distance set those to variables
- Geocode the Address to get an XY and set those to Variables
- Buffer a polygon of the state using the distance variable created from the DataInput JSON
- Define the State Boundary
- Buffer the State Boundary and set into memory
- Test ot see if the point is within that Buffered State Boundary
- Return True if its within and False if Outside the Buffered State Boundary
ERROR:
Traceback (most recent call last):
File "E:\ArcGIS Server\ArcGIS\xyz.py", line 87, in <module>
results = arcpy.SelectLayerByLocation_management(ptGeometry, 'INTERSECT', 'IN_MEMORY/BufferGeom')
File "C:\Program Files (x86)\ArcGIS\Desktop10.5\ArcPy\arcpy\management.py", line 7891, in SelectLayerByLocation
raise e
ExecuteError: Failed to execute. Parameters are not valid.
ERROR 000368: Invalid input data.
Failed to execute (SelectLayerByLocation).
Can Anyone see anything obvious as to why I am tripping this error?
<SPAN class="keyword token">import</SPAN> arcpy
<SPAN class="keyword token">import</SPAN> requests
<SPAN class="keyword token">import</SPAN> json
<SPAN class="keyword token">import</SPAN> uuid
<SPAN class="comment token">#dataInputParameter1 = arcpy.GetParameterAsText(0)</SPAN>
dataInputParameter1 <SPAN class="operator token">=</SPAN> <SPAN class="string token">'{"Location":[{"address":"6188 Maddox Blvd, Chincoteague, VA, 23336","distance":"12" }]}'</SPAN>
<SPAN class="comment token"># ADD ADDITIONAL VARIABLE FOR RETURN RESULT </SPAN>
varResult <SPAN class="operator token">=</SPAN> <SPAN class="string token">"true"</SPAN>
textDict <SPAN class="operator token">=</SPAN> json<SPAN class="punctuation token">.</SPAN>loads<SPAN class="punctuation token">(</SPAN>dataInputParameter1<SPAN class="punctuation token">)</SPAN>
langs <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="keyword token">for</SPAN> SpecificLocation <SPAN class="keyword token">in</SPAN> textDict<SPAN class="punctuation token">[</SPAN><SPAN class="string token">'Location'</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">:</SPAN>
varsearchAddress <SPAN class="operator token">=</SPAN> SpecificLocation<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"address"</SPAN><SPAN class="punctuation token">]</SPAN>
varsearchDistance <SPAN class="operator token">=</SPAN> SpecificLocation<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"distance"</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="punctuation token">(</SPAN><SPAN class="string token">"address: "</SPAN> <SPAN class="operator token">+</SPAN> varsearchAddress<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="punctuation token">(</SPAN><SPAN class="string token">"distance: "</SPAN> <SPAN class="operator token">+</SPAN> varsearchDistance<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="string token">""</SPAN>
<SPAN class="comment token"># LOCAL VARIABLES</SPAN>
coordinates <SPAN class="operator token">=</SPAN> <SPAN class="string token">""</SPAN>
countList <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">]</SPAN>
countyField <SPAN class="operator token">=</SPAN> <SPAN class="string token">"FIPS2"</SPAN>
countList2 <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">]</SPAN>
finalList <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">]</SPAN>
txt_list <SPAN class="operator token">=</SPAN> <SPAN class="string token">""</SPAN>
txt_list2 <SPAN class="operator token">=</SPAN> <SPAN class="string token">""</SPAN>
data <SPAN class="operator token">=</SPAN> <SPAN class="string token">""</SPAN>
<SPAN class="comment token"># GEOCODERS</SPAN>
geoCodeUrl <SPAN class="operator token">=</SPAN> r<SPAN class="string token">"https://gismaps.vita.virginia.gov/arcgis/rest/services/Geocoding/VGIN_Composite_Locator/GeocodeServer/findAddressCandidates"</SPAN>
searchAddress <SPAN class="operator token">=</SPAN> varsearchAddress
searchDistance <SPAN class="operator token">=</SPAN> varsearchDistance
<SPAN class="comment token"># CONVERT MILE TO METERS FOR SPATIAL BUFFER</SPAN>
distanceMeters <SPAN class="operator token">=</SPAN> int<SPAN class="punctuation token">(</SPAN>varsearchDistance<SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">*</SPAN> <SPAN class="number token">1609.34</SPAN>
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">singleAdressGeocode</SPAN><SPAN class="punctuation token">(</SPAN>address<SPAN class="punctuation token">,</SPAN> geoCodeUrl<SPAN class="punctuation token">,</SPAN> outSR <SPAN class="operator token">=</SPAN> <SPAN class="string token">"4326"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="comment token">#def singleAdressGeocode(address, geoCodeUrl, outSR = "26917"):</SPAN>
<SPAN class="comment token">##clean up the address for url encoding</SPAN>
address <SPAN class="operator token">=</SPAN> address<SPAN class="punctuation token">.</SPAN>replace<SPAN class="punctuation token">(</SPAN><SPAN class="string token">" "</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"+"</SPAN><SPAN class="punctuation token">)</SPAN>
address <SPAN class="operator token">=</SPAN> address<SPAN class="punctuation token">.</SPAN>replace<SPAN class="punctuation token">(</SPAN><SPAN class="string token">","</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"%3B"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#send address to geocode service</SPAN>
lookup <SPAN class="operator token">=</SPAN> requests<SPAN class="punctuation token">.</SPAN>get<SPAN class="punctuation token">(</SPAN>geoCodeUrl <SPAN class="operator token">+</SPAN> <SPAN class="string token">"?SingleLine="</SPAN> <SPAN class="operator token">+</SPAN> address <SPAN class="operator token">+</SPAN> <SPAN class="string token">"&outSR="</SPAN> <SPAN class="operator token">+</SPAN> outSR <SPAN class="operator token">+</SPAN> <SPAN class="string token">"&maxLocations=1&f=pjson"</SPAN><SPAN class="punctuation token">)</SPAN>
data <SPAN class="operator token">=</SPAN> lookup<SPAN class="punctuation token">.</SPAN>json<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">if</SPAN> data<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"candidates"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="comment token">##coords = data["candidates"][0]["location"]</SPAN>
<SPAN class="comment token">##return coords</SPAN>
<SPAN class="keyword token">return</SPAN> data
<SPAN class="keyword token">else</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="comment token">##no results</SPAN>
<SPAN class="keyword token">return</SPAN> <SPAN class="string token">"Address not geocoded: "</SPAN> <SPAN class="operator token">+</SPAN> address
<SPAN class="comment token"># DEFINE VARIABLES FOR THE ADDRESS AND X AND Y VALUES</SPAN>
geocodeResult <SPAN class="operator token">=</SPAN> singleAdressGeocode<SPAN class="punctuation token">(</SPAN>searchAddress<SPAN class="punctuation token">,</SPAN> geoCodeUrl<SPAN class="punctuation token">)</SPAN>
addressResult <SPAN class="operator token">=</SPAN> geocodeResult<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"candidates"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="string token">"address"</SPAN><SPAN class="punctuation token">]</SPAN>
coordinateX <SPAN class="operator token">=</SPAN> geocodeResult<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"candidates"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="string token">"location"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="string token">"x"</SPAN><SPAN class="punctuation token">]</SPAN>
coordinateY <SPAN class="operator token">=</SPAN> geocodeResult<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"candidates"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="string token">"location"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="string token">"y"</SPAN><SPAN class="punctuation token">]</SPAN>
strcoordinateX <SPAN class="operator token">=</SPAN> str<SPAN class="punctuation token">(</SPAN>coordinateX<SPAN class="punctuation token">)</SPAN>
strcoordinateY <SPAN class="operator token">=</SPAN> str<SPAN class="punctuation token">(</SPAN>coordinateY<SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>workspace <SPAN class="operator token">=</SPAN> r<SPAN class="string token">"E:/ArcGISProjects/CountySelection/xyz.sde"</SPAN>
<SPAN class="comment token"># CREATE THE POINT FROM THE X AND Y</SPAN>
point <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Point<SPAN class="punctuation token">(</SPAN>coordinateX<SPAN class="punctuation token">,</SPAN> coordinateY<SPAN class="punctuation token">)</SPAN>
ptGeometry <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>PointGeometry<SPAN class="punctuation token">(</SPAN>point<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># DEFINE THE STATE FEATURE CLASS</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>MakeFeatureLayer_management<SPAN class="punctuation token">(</SPAN>r<SPAN class="string token">"E:/ArcGISProjects/CountySelection/xyz.sde/Boundary"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"state_lyr"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># BUFFER THE STATE LAYER AND PUT IT IN MEMORY</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>Buffer_analysis<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'state_lyr'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'IN_MEMORY/BufferGeom'</SPAN><SPAN class="punctuation token">,</SPAN> distanceMeters<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># TEST TO SEE IF POINT IS INSIDE THE BUFFERED GEOMETRY</SPAN>
results <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>SelectLayerByLocation_management<SPAN class="punctuation token">(</SPAN>ptGeometry<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'INTERSECT'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'IN_MEMORY/BufferGeom'</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#Test if there are any polygons points: </SPAN>
<SPAN class="keyword token">if</SPAN> int<SPAN class="punctuation token">(</SPAN>arcpy<SPAN class="punctuation token">.</SPAN>GetCount_management<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'IN_MEMORY/BufferGeom'</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>getOutput<SPAN class="punctuation token">(</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="operator token">==</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">raise</SPAN> Exception<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Selected points do not overlap any polygons."</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="string token">"Selected points do not overlap any polygons."</SPAN>
varResult <SPAN class="operator token">=</SPAN> <SPAN class="string token">"true"</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>