from arcgis.features import FeatureLayer
arcpy.env.workspace = r"O:\Professional Services\GIS Information\GIS\Boundary\NAMA_Boundary.gdb"
boundary = "NAMA_Boundary_ply"
desc = arcpy.Describe("https://maps2.dcgis.dc.gov/dcgis/rest/services/DCGIS_DATA/Transportation_WebMercator/MapServer/154")
boundaryproj1 = r"O:\Professional Services\GIS Information\GIS\Boundary\NAMA_Boundary.gdb\boundary_proj_1"
arcpy.Project_management(boundary,boundaryproj1, desc.spatialReference)
base= "https://maps2.dcgis.dc.gov/dcgis/rest/services/DCGIS_DATA/Transportation_WebMercator/MapServer/154"
where = '0=0'
token = ''
outPath = r"O:\Professional Services\GIS Information\GIS\Flora\2020_Python_TreeRisk_Assessment\2020_Python_TreeRisk_Assessment.gdb"
fields = "*"
descenv = arcpy.Describe(boundaryproj1)
descenvext = descenv.extent
boundaryext = ('{},{},{},{}'.format(descenvext.XMin, descenvext.YMin, descenvext.XMax, descenvext.YMax))
from urllib.request import urlopen
base= "https://maps2.dcgis.dc.gov/dcgis/rest/services/DCGIS_DATA/Transportation_WebMercator/MapServer/154"
urlstring = base + "?f=json"
j = urllib.request.urlopen(urlstring)
js = json.load(j)
maxrc = int(js["maxRecordCount"])
print ("Record extract limit: %s" % maxrc)
outdata = r"O:\Professional Services\GIS Information\GIS\Flora\2020_Python_TreeRisk_Assessment\2020_Python_TreeRisk_Assessment.gdb\DC_Roads_all"
where = "1=1"
urlstring = base + "/query?where={}&returnIdsOnly=true&f=json".format(where)
j = urllib.request.urlopen(urlstring)
js = json.load(j)
idfield = js["objectIdFieldName"]
idlist = js["objectIds"]
idlist.sort()
numrec = len(idlist)
print ("Number of target records: %s" % numrec)
print ("Gathering records...")
fs = dict()
for i in range(0, numrec, maxrc):
torec = i + (maxrc - 1)
if torec > numrec:
torec = numrec - 1
fromid = idlist[i]
toid = idlist[torec]
where = "{} >= {} and {} <= {}".format(idfield, fromid, idfield, toid)
print (" {}".format(where))
query = "/query?where={}&outFields={}&returnGeometry=true&f=json&token={}&geometry={}&geometryType=esriGeometryEnvelope&returnExceededLimitFeatures=false".format(where, fields, token, boundaryext)
urlstring = base + query
fs[i] = arcpy.FeatureSet()
fs[i].load(urlstring)
print ("Saving features...")
fslist = []
for key,value in fs.items():
fslist.append(value)
arcpy.Merge_management(fslist, outdata)
print ("Done!")
arcpy.env.workspace =r"O:\Professional Services\GIS Information\GIS\Flora\2020_Python_TreeRisk_Assessment\2020_Python_TreeRisk_Assessment.gdb"
where = '1=1'
boundaryext = "393932.62135367095,131367.2651843205,400957.7405239567,139578.9519640468"
query = "/query?where={}&outFields={}&returnGeometry=true&f=json&token={}&geometry={}&geometryType=esriGeometryEnvelope&returnExceededLimitFeatures=false".format(where, fields, token, boundaryext)
fsURL = base + query
fs = arcpy.FeatureSet()
fs.load(fsURL)
outputName = 'DCRoads_extent'
outputPath = os.path.join(outPath, outputName)
arcpy.CopyFeatures_management(fs, outputPath)