Daugiau

Arcpy.sa.Peržiūrėta naudojant OFFSETA


Tam naudojamas „ArcGIS10 arcpy“ su erdviniu analitiku.

Turiu paskambinti „Viewshed“, bet su stebėtojo aukščiu. Aš bandžiau naudoti „Z-žino taškų“ funkcijų rinkinį, tačiau tai sukėlė tik klaidą. Aš maitinu „arcpy.PointGeometry“ objektą „Raster“ objektu, kuris yra mano įvestis. pvz.

viewshed = arcpy.sa.Viewshed (dem, source_point)

Aš naudoju dinamiškai sugeneruotus taškus kaip stebėtojų taškų, skirtų apžvalgos aikštelei, šaltinį. Funkcijų klasės turi būti sukurtos atmintyje.

Išbandžiau keletą būdų, kaip sukurti atminties funkcijų klasę su OFFSETA lauku, tačiau iki šiol tai neveikė.

Kas nors turi idėją, kaip naudoti „Viewshed OFFSETA“, ar kitą būdą nustatyti stebėtojo aukštį, kai iškviečiant „Viewshed“ python naudojant atminties funkcijų klasę?


Štai tokį sprendimą sugalvojau pasinaudodamas Matthew Snape'o patarimais. „dem“, „source_point“, „offseta“ ir „offsetb“ yra įvestys, kad veiktų tai:

# Sukurkite peržiūros kanalo įvestį arcpy.CreateFeatureclass_management ("in_memory", "viewshedinput", "POINT") arcpy.AddField_management ("in_memory  viewshedinput", "OFFSETA", "FLOAT") arcpy.AddField_management ("in_memory "OFFSETB", "FLOAT") eilutės = arcpy.InsertCursor ("in_memory  viewshedinput") eilutė = rows.newRow () row.shape = source_point row.OFFSETA = offseta row.OFFSETB = offsetb rows.insertRow (row) del eilučių, eilutės # Apskaičiuokite šaltinio taško viewhed rodyklę = arcpy.sa.Viewshed (dem, "in_memory  viewshedinput")

„Viewhed“ įrankis naudoja funkcijų sluoksnius, kad apibrėžtų stebėtojus. OFFSETA ir kiti parametrai nurodomi naudojant lauką.

Sukurkite tašką kaip funkcijų sluoksnį, tada naudokite arcpy.AddField_management ir arcpy.CalculateField_management laukui sukurti ir nustatyti.