Mengekstraksi Nilai ke Poin tanpa ArcGIS Spatial Analyst?


8

Saya memiliki DEM raster & beberapa poin. Saya ingin menentukan ketinggian DEM di setiap titik. Selain memeriksa DEM secara manual di setiap titik, (sangat memakan waktu dengan banyak poin) apakah ada cara untuk melakukan ini tanpa akses ke alat Extract Analyst Nilai Nilai untuk Poin? Saya memiliki akses ke Analis 3d jika itu membantu.


Jawaban:


6

Tambahkan Informasi Permukaan analis 3D akan menambahkan bidang Z ke data vektor Anda dengan nilai data dari lapisan raster yang tumpang tindih:

Interpolasi properti elevasi permukaan untuk fitur titik, multipoint, dan polyline.

Itu untuk v10, saya tidak menangkap versi ArcGIS yang Anda gunakan.


10

Naskah:

import arcpy, traceback, sys, os

pntFile=arcpy.GetParameterAsText(0)
rasters=arcpy.GetParameterAsText(1)

rasters=rasters.split(';')
theFields=[x.name.lower() for x in arcpy.ListFields(pntFile)]
result=arcpy.GetCount_management(pntFile)
nF=int(result.getOutput(0))
p=arcpy.Point()
try:
    def showPyMessage():
        arcpy.AddMessage(str(time.ctime()) + " - " + message)
    for raster in rasters:
                desc=arcpy.Describe(raster)
                theFLD=raster.lower()
                arcpy.AddMessage("Sampling "+theFLD)
                if not(theFLD in theFields):
                        try:arcpy.AddField_management(pntFile, theFLD, "FLOAT")
                        except:
                                aF=raster.split(os.sep)[-1]
                                theFLD=aF.split(".")[0]
                                theFLD="F"+theFLD
                                arcpy.AddField_management(pntFile, theFLD, "FLOAT")
                arcpy.SetProgressor("step", "", 0, nF)
                with arcpy.da.UpdateCursor(pntFile,("SHAPE@XY",theFLD)) as rows:
                        for row in rows:
                                p.X,p.Y=row[0]
                                myArray = arcpy.RasterToNumPyArray(raster,p,1,1,-9999)
                                row[1]=myArray[0,0]
                                rows.updateRow(row)
                                arcpy.SetProgressorPosition()
                        del row,rows
except:
    message = "\n*** PYTHON ERRORS *** "; showPyMessage()
    message = "Python Traceback Info: " + traceback.format_tb(sys.exc_info()[2])[0]; showPyMessage()
    message = "Python Error Info: " +  str(sys.exc_type)+ ": " + str(sys.exc_value) + "\n"; showPyMessage()

Antarmuka:

masukkan deskripsi gambar di sini

Parameter:

masukkan deskripsi gambar di sini

untuk bekerja dari mxd. Berikan nama unik pendek raster pada daftar isi. Script akan membuat bidang nama yang sama dan berupaya mengisinya dengan nilai sel.

Itu lambat, jadi saya menggunakannya dengan kurang dari 1000 poin


Hai, terima kasih untuk skripnya. Saya mencoba menjalankannya beberapa kali tetapi memberikan kesalahan ini: "baris 27, dalam <module> untuk baris berturut-turut: Sel 17 Mei 12:56:55 2016 - Info Kesalahan Python: <type 'exceptionions.RuntimeError' >: Kolom telah ditentukan yang tidak ada. " ada ide? Terima kasih.
Matt

Apa yang Anda sebut raster ini di daftar isi mxd?
FelixIP

Saya mencoba DEMH dan DEMH_copy sebagai nama raster.
Mat

Bisakah Anda melihat bidang demh di tabel shapefile setelah mogok?
FelixIP

bidang "demh_copy_tif" ditambahkan ke tabel atribut tetapi dengan nilai NULL.
Matt

4

Anda dapat melakukan ini dengan Lingkungan Pemodelan Geospasial Hawthorne Beyer yang gratis , (GME, sebelumnya dikenal sebagai Hawth's Tools). Ada alat di sana, Intersect Points With Raster , yang seperti namanya, bertindak seperti alat Intersect di ArcGIS tetapi memungkinkan Anda untuk memotong layer titik dengan raster, seperti alat Extract Values ​​to Points. Anda juga bisa menerapkan kueri SQL ke lapisan titik Anda untuk hanya mengekstrak nilai raster untuk subset poin. Anda perlu menginstal atau memutakhirkan R pada PC Anda, dan GME juga (ini bergantung pada ArcGIS tetapi dapat dijalankan secara independen dari sesi ArcGIS).


Pada titik ini Anda juga dapat menggunakan R. Termasuk menambahkan perpustakaan dan membaca data, hanya dibutuhkan sekitar 4 baris kode untuk melakukan ini dan Anda dapat meminta data dengan cepat menggunakan sintaksis indeks.
Jeffrey Evans

1

Opsi lain untuk mengekstrak nilai raster ke titik shapefile adalah menggunakan QGIS yang merupakan perangkat lunak sumber terbuka gratis. Dari pengelola plugin di Pengunduh unduhan QGIS : Alat pengambilan sampel titik , yang dapat mengekstraksi beberapa nilai raster ke titik shapefile mirip dengan Ekstrak Multi Nilai ke Poin yang memerlukan ekstensi Analis Spasial di ArcGIS.

Alat ini berfungsi dengan baik jika proyeksi data raster dan shapefile sama. Bekerja dengan proyeksi yang berbeda untuk data raster dan data shapefile akan membuat file shapefile dengan kolom kosong nilai raster.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.