sdf = pd.DataFrame.spatial.from_featureclass(os.path.join(gdb_file, gdb_layers[1]))
sdf.head()
# Describe the input feature and extract the extent
description = arcpy.Describe(os.path.join(gdb_file, gdb_layers[1]))
extent = description.extent
tessellation_extent = sdf.spatial.full_extent
spatial_ref = extent.spatialReference
I am trying to generate a Feature Class with hexagons by using the method GenerateTessellation_management with this code:
arcpy.GenerateTessellation_management(Output_Feature_Class=gdb_file+r"\hex_tessellation",
Extent=tessellation_extent,
Shape_Type="HEXAGON",
Size="1000000 Square Foot",
Spatial_Reference=spatial_ref
)
And I am getting this error:
I am following the documentation as per the following website:
https://pro.arcgis.com/en/pro-app/latest/tool-reference/data-management/generatetesellation.htm
Any idea why this is not working?
Thanks in advanced.
Dario
from here
Generate Tessellation (Data Management)—ArcGIS Pro | Documentation
w = extent.width
h = extent.height
u = extent.spatialReference.linearUnitName
area = "{size} Square{unit}s".format(size=w/3 * h/3, unit=u)
have you confirmed setting the area unit? I looks like a different configuration is expected than what you have shown
Thanks for your reply.
Actually the Feature Class in on a shape that is on Degrees. I might use the area as:
w = extent.width
h = extent.height
u = extent.spatialReference.angularUnitName
w, h, u
(359.999999902, 179.491346668, 'Degree')
area = "{size} Square{unit}s".format(size=w/3 * h/3, unit=u)
area
'7179.653864765539 SquareDegrees'
but got the same error. Do you have any other suggestion.
Thanks.
That is a horrendously large area and I suspect a reason that you might be having issues
I've changed it to be the area of equal size hexagons where the formula for the area is:
there I added this equation to have hexagon of 5 degrees each, consequently:
area = "{size} Square{unit}s".format(size=((3.0*math.sqrt(3.0))/2.0)*(a**2.0), unit=u)
area
'64.9519052838329 SquareDegrees'
... then the result is again the same error. Can this function deal with geographical coordinates rather than linear (like UTM)?
# Use the extent's spatial reference to project the output
spatial_ref = extent.spatialReference
spatial_ref
No.... If neither has a spatial reference, the output is projected in GCS_WGS_1984. from the help, But do you really want approx 8 degree by 8 degree hexagons? How big an area are you trying to produce a hexagonal grid pattern for? It wouldn't take many hexagons to cover north america.
On the side note, If you are not working on the continental or global scale, I would use a projected coordinate system. UTM, albers, whatever... at least the lengths of the sides of the hexagon will be planar and equal(ish) far moreso than degrees. There is no indication whether the hexagon sides are generate as geodesic shapes
I am working on a global scale. Ideally the hexagon(s) should be 0.1 degrees on the side. Although I think the problem might be in the spatial reference. Don't you think.
... another idea would be to convert the layer to an Equal-area projection, run the procedure. And see what happen.
0.1 degrees squared would be the area of each hexagon, not 5 degrees... that might be your full extent.
Just try something much smaller and check the coordinate system you want to use eg GCS WGS84 if you must work in degrees