Kelas ini mencakup Python dari dasar-dasarnya. Cocok untuk praktisi GIS tanpa latar belakang pemrograman atau pengetahuan python. Kursus ini akan memperkenalkan peserta pada konsep pemrograman dasar, pustaka untuk analisis spasial, API geospasial, dan teknik untuk membangun saluran pemrosesan data spasial Show
Pelajari lebih lanjut tentang pandangan saya tentang mengapa dan bagaimana mempelajari Python dalam Presentasi Pengantar ini Contoh kode di kelas ini menggunakan berbagai dataset. Semua set data dan notebook Jupyter yang diperlukan diberikan kepada Anda dalam file 43. Buka zip file ini ke direktori - sebaiknya ke folder 44Tidak terdaftar di kelas yang dipandu instruktur kami tetapi ingin mengerjakan materi sendiri? Ada banyak cara untuk menginstal Python di sistem Anda. Banyak sistem operasi dilengkapi dengan distribusi Python bawaan juga. Jika Anda menggunakan perangkat lunak seperti QGIS - ini hadir dengan versi Python-nya sendiri. Bekerja pada proyek Python biasanya memerlukan penginstalan paket pihak ketiga (mis. e. peralatan). Karena paket-paket ini memiliki ketergantungan yang berbeda - mereka sering menyebabkan konflik dan kesalahan karena perbedaan versi Python di sistem Anda Cara mudah dan andal untuk mendapatkan instalasi Python di sistem Anda adalah melalui Anaconda. Untuk kursus ini, kami akan menggunakan Anaconda3 Individual Edition untuk menginstal Python dan paket analisis spasial yang diperlukan
Anaconda menyediakan perintah _45 yang dapat dijalankan dari Command Prompt di Windows atau Terminal di Mac/Linux. Ini adalah metode yang disukai untuk menginstal paket yang diperlukan
_
Perhatikan bahwa aplikasi JupyterLab hanya dapat menelusuri file di Drive tempat peluncurannya. Jika data Anda disimpan di drive lain, Anda memerlukan langkah tambahan untuk beralih ke drive tersebut sebelum meluncurkan Jupyterlab Windows Pada prompt perintah, ketik huruf drive diikuti dengan 60 dan tekan Enter untuk beralih ke drive________24___22_______Mac/Linux Periksa drive yang dipasang di sistem Anda dengan memasukkan 61. Setelah itu gunakan perintah _62 untuk beralih ke drive
0Men-debug Kesalahan Instalasi PythonBagian berikut menjelaskan kesalahan penginstalan umum dengan perbaikan yang disarankan Kesalahan OpenSSLPada banyak sistem Windows, Anda mungkin mendapatkan kesalahan seperti CondaSSLError. OpenSSL tampaknya tidak tersedia di mesin ini. OpenSSL diperlukan untuk mengunduh dan menginstal paket. Ini berarti modul OpenSSL hilang. Silakan unduh dan instal paket Win32/Win64 OpenSSL dan coba lagi Jika kesalahan tetap ada, Anda dapat memperbaiki masalah secara manual dengan menyalin file DLL yang diperlukan di tempat yang benar seperti Kesalahan indeks spasial RTtreeSaat mengimpor GeoPanda, Anda mungkin melihat kesalahan Tidak dapat menemukan atau memuat indeks spasial_c-64. dll. Kesalahan ini kemungkinan disebabkan oleh instalasi yang rusak. Kesalahan ini mudah diperbaiki dengan menghapus lingkungan conda dan menginstal ulang geopanda. Jalankan urutan perintah berikut untuk menghapus lingkungan _1Ikuti langkah-langkah instalasi dan instal ulang geopanda Paket data kelas Anda berisi beberapa notebook Jupyter yang berisi kode dan latihan untuk kelas ini
Buka buku catatan bernama _64Saat mempelajari bahasa pemrograman baru, biasanya mempelajari cara mencetak 'Hello World' terlebih dahulu. ’. Meskipun agak aneh, ini adalah langkah pertama yang berguna untuk mengetahui cara mengirim input ke program dan di mana melihat hasilnya. Dengan Python, Anda dapat menggunakan fungsi ________0______65 bawaan untuk mencetak salam 66Buka buku catatan bernama _67StringString adalah rangkaian huruf, angka, dan tanda baca - atau biasa dikenal dengan teks Di Python Anda dapat membuat string dengan mengetikkan huruf di antara tanda kutip tunggal atau ganda _2AngkaPython dapat menangani beberapa jenis angka, tetapi dua yang paling umum adalah
_3 _4 5LatihanKami memiliki variabel bernama 68 di bawah ini dengan nilai 69 - menunjukkan jarak garis lurus antara San Francisco dan New York dalam Kilometer. Buat variabel lain bernama 70 dan simpan nilai jarak dalam mil
Tambahkan kode di sel di bawah ini dan jalankan. Outputnya harus 2569. 37 _6Buka buku catatan bernama _71TupelTuple adalah urutan objek. Itu dapat memiliki sejumlah objek di dalamnya. Dalam tupel Python ditulis dengan tanda kurung bulat () _7Anda dapat mengakses setiap item berdasarkan posisinya, mis. e. indeks. Dalam pemrograman, penghitungan dimulai dari 0. Jadi item pertama memiliki indeks 0, item kedua memiliki indeks 1 dan seterusnya. Indeks harus diletakkan di dalam tanda kurung siku [] _8DaftarDaftar mirip dengan tupel - tetapi dengan perbedaan utama. Dengan tuple, setelah dibuat, mereka tidak dapat diubah, mis. e. mereka tidak berubah. Tetapi daftar bisa berubah. Anda dapat menambah, menghapus, atau mengubah elemen dalam daftar. Dalam Python, daftar ditulis dengan tanda kurung siku [] _9Anda dapat mengakses elemen dari daftar menggunakan indeks dengan cara yang sama seperti tupel Anda dapat memanggil fungsi _72 dengan objek Python apa pun dan itu akan menghitung ukuran objekKita dapat menambahkan item ke daftar menggunakan metode ________0______73 0Karena daftar dapat diubah, Anda akan melihat bahwa ukuran daftar kini telah berubah Metode lain yang berguna untuk daftar adalah _74 - yang dapat mengurutkan elemen dalam daftar 1Penyortiran default dalam urutan menaik. Jika kami ingin mengurutkan daftar dalam urutan menurun, kami dapat memanggil fungsi dengan 75 2SetSet seperti daftar, tetapi dengan beberapa properti yang menarik. Terutama bahwa mereka hanya berisi nilai-nilai unik. Ini juga memungkinkan untuk mengatur operasi - seperti persimpangan, penyatuan, dan perbedaan. Dalam praktiknya, himpunan biasanya dibuat dari daftar 3Set juga berguna untuk menemukan elemen unik dalam daftar. Mari gabungkan kedua daftar menggunakan metode ________0______76. Daftar yang dihasilkan akan memiliki elemen duplikat. Membuat satu set dari daftar menghapus elemen duplikat 4KamusDalam kamus Python ditulis dengan kurung kurawal {}. Kamus memiliki kunci dan nilai. Dengan daftar, kita dapat mengakses setiap elemen berdasarkan indeksnya. Tapi kamus memudahkan untuk mengakses elemen dengan nama. Kunci dan nilai dipisahkan oleh titik dua 5Anda dapat mengakses item kamus dengan mengacu pada nama kuncinya, di dalam tanda kurung siku LatihanDari kamus di bawah, bagaimana Anda mengakses nilai lintang dan bujur? Output yang diharapkan akan terlihat seperti di bawah ini 6 7Buka buku catatan bernama _77 8Melarikan diri karakterKarakter tertentu spesial karena menggunakan bahasa Python itu sendiri. Misalnya, karakter kutipan ’ digunakan untuk mendefinisikan sebuah string. Apa yang Anda lakukan jika string Anda berisi karakter kutipan? Dalam string Python, garis miring terbalik \ adalah karakter khusus, juga disebut karakter escape. Awalan karakter apa pun dengan garis miring terbalik membuatnya menjadi karakter biasa. (Petunjuk. Awalan backslash dengan backshalsh membuatnya biasa juga. ) Itu juga digunakan untuk mewakili karakter spasi tertentu, \n adalah baris baru, \t adalah tab dll Hapus # dari sel di bawah dan jalankan _9Kami dapat memperbaiki kesalahan dengan menghapus tanda kutip tunggal di dalam string _0Sebagai alternatif, Anda juga dapat menggunakan tanda kutip ganda jika string Anda berisi tanda kutip tunggal _1Bagaimana jika string kita berisi tanda kutip tunggal dan ganda? Kita bisa menggunakan tanda kutip tiga. Melampirkan string dalam tanda kutip tiga memastikan tanda kutip tunggal dan ganda diperlakukan dengan benar _2Garis miring terbalik menimbulkan masalah lain saat berhadapan dengan jalur Windows _3Awalan string dengan r make adalah string Raw. Yang tidak menafsirkan garis miring terbalik sebagai karakter khusus _4Mencetak StringCara modern untuk membuat string dari variabel menggunakan metode 78 _5Anda juga dapat menggunakan metode format untuk mengontrol ketepatan angka _6LatihanGunakan pengiris string untuk mengekstrak dan mencetak derajat, menit, dan bagian kedua dari string di bawah ini. Outputnya harus sebagai berikut _7 _8Buka buku catatan bernama _79Untuk LoopA for loop digunakan untuk mengulang urutan. Urutan dapat berupa daftar, tupel, kamus, set, atau string _9Untuk mengulangi kamus, Anda dapat memanggil metode 80 di atasnya yang mengembalikan Tuple kunci dan nilai untuk setiap item 0Fungsi _81 bawaan memungkinkan Anda membuat urutan angka yang dapat Anda ulangiFungsi rentang juga dapat menggunakan nomor awal dan akhir 1Python mendukung kondisi logis seperti sama, tidak sama, lebih besar dari dll. Kondisi ini dapat digunakan dalam beberapa cara, paling sering dalam pernyataan if dan loop Pernyataan if ditulis dengan menggunakan kata kunci ________0______82 Catatan. Kesalahan yang sangat umum yang dibuat programmer adalah menggunakan = untuk mengevaluasi kondisi yang sama dengan. The = dalam Python berarti penugasan, tidak sama dengan. Selalu pastikan bahwa Anda menggunakan == untuk kondisi yang sama dengan 2Anda dapat menggunakan 83 kata kunci bersama dengan 82 untuk mencocokkan elemen yang tidak memenuhi ketentuan 3Python bergantung pada lekukan (spasi putih di awal baris) untuk menentukan cakupan dalam pernyataan for loop dan if. Jadi pastikan kode Anda terindentasi dengan benar Anda dapat mengevaluasi serangkaian ketentuan menggunakan kata kunci ________0______85 Beberapa kriteria dapat digabungkan menggunakan kata kunci _86 dan 87 4Pernyataan KontrolFor-loop mengulang setiap item dalam urutan. Terkadang diinginkan untuk menghentikan eksekusi, atau melewatkan bagian tertentu dari for-loop. Python memiliki pernyataan khusus, 88, 89 dan 90Pernyataan _88 akan menghentikan loop dan keluar darinya 5Pernyataan _89 akan melewatkan bagian sisa dari perulangan dan melanjutkan ke iterasi berikutnya 6Pernyataan _90 tidak melakukan apa-apa. Ini berguna ketika beberapa kode diperlukan untuk menyelesaikan sintaks, tetapi Anda tidak ingin kode apa pun dieksekusi. Ini biasanya digunakan sebagai placeholder ketika suatu fungsi tidak lengkap 7LatihanTantangan Fizz Buzz Tulis program yang mencetak angka dari 1 sampai 100 dan untuk kelipatan 3 cetak Fizz sebagai pengganti angka dan untuk kelipatan 5 cetak Buzz. Jika habis dibagi keduanya, cetak FizzBuzz Jadi outputnya harus seperti di bawah ini _94Memecah masalah lebih lanjut, kita perlu membuat for-loop dengan kondisi berikut
Petunjuk. Lihat sel kode di bawah ini. Gunakan operator modulus % untuk memeriksa apakah suatu bilangan habis dibagi dengan yang lain. _95 sama dengan 0, artinya habis dibagi 5 8Buka buku catatan bernama _96Fungsi adalah blok kode yang mengambil satu atau lebih input, melakukan beberapa pemrosesan padanya dan mengembalikan satu atau lebih output. Kode di dalam fungsi hanya berjalan saat dipanggil Suatu fungsi didefinisikan menggunakan kata kunci _97 _9Fungsi berguna karena memungkinkan kita untuk menangkap logika kode kita dan kita dapat menjalankannya dengan masukan yang berbeda tanpa harus menulis kode yang sama berulang kali. _0Fungsi dapat mengambil banyak argumen. Mari tulis fungsi untuk mengonversi koordinat dari derajat, menit, detik ke derajat desimal. Konversi ini cukup sering diperlukan saat bekerja dengan data yang dikumpulkan dari perangkat GPS
Untuk menghitung derajat desimal, kita dapat menggunakan rumus di bawah ini Jika derajatnya positif _98Jika derajat negatif _99 _1 _2LatihanDiberi string koordinat dengan nilai dalam derajat, menit dan detik, ubahlah menjadi derajat desimal dengan memanggil fungsi 00 _3 _4Buka buku catatan bernama _01Python hadir dengan banyak modul bawaan yang menawarkan solusi siap pakai untuk masalah pemrograman umum. Untuk menggunakan modul ini, Anda harus menggunakan kata kunci 02. Setelah diimpor dalam skrip Python Anda, Anda dapat menggunakan fungsi yang disediakan oleh modul dalam skrip AndaKami akan menggunakan modul _03 bawaan yang memungkinkan kami menggunakan fungsi matematika tingkat lanjutAnda juga dapat mengimpor fungsi atau konstanta tertentu dari modul seperti di bawah ini _5Menghitung JarakDiberikan 2 titik dengan koordinat Lintang dan Bujurnya, Rumus Haversine menghitung jarak garis lurus dalam meter, dengan asumsi bahwa Bumi berbentuk bola Rumusnya cukup sederhana untuk diimplementasikan dalam spreadsheet juga. Jika Anda penasaran, lihat postingan saya tentang penggunaan rumus ini untuk menghitung jarak dalam spreadsheet Kita dapat menulis sebuah fungsi yang menerima sepasang koordinat asal dan tujuan dan menghitung jaraknya _6 _7 _8Temukan Telur Paskah PythonPemrogram suka menyembunyikan lelucon rahasia dalam program mereka untuk senjata. Ini dikenal sebagai Telur Paskah. Python memiliki telur paskah yang dapat Anda lihat saat mencoba mengimpor modul bernama 04. Coba tulis perintah _05 di bawah iniMari kita coba satu lagi. Coba impor modul _06Berikut daftar lengkap telur paskah dengan Python LatihanTemukan koordinat 2 kota terdekat dan hitung jarak antara keduanya dengan memanggil fungsi 07 di bawah ini _9Buka buku catatan bernama _08Python memiliki ekosistem modul pihak ketiga yang berkembang pesat (mis. e. perpustakaan atau paket) tersedia untuk Anda instal. Ada ratusan ribu modul semacam itu yang tersedia untuk Anda instal dan gunakan Menginstal perpustakaan pihak ketigaPython hadir dengan manajer paket bernama 09. Itu dapat menginstal semua paket yang terdaftar di PyPI (Python Package Index). Untuk menginstal paket menggunakan pip, Anda perlu menjalankan perintah seperti berikut di Terminal atau CMD prompt 10Untuk kursus ini, kami menggunakan platform Anancoda - yang hadir dengan pengelola paketnya sendiri bernama 45. Anda dapat menggunakan Anaconda Navigator untuk mencari dan menginstal paket. Atau jalankan perintah seperti berikut di Terminal atau CMD Prompt _49Lihat perbandingan pip dan conda ini untuk memahami perbedaannya Menghitung JarakKami telah menginstal paket 56 di lingkungan kami. 56 hadir dengan fungsi yang telah menerapkan banyak rumus perhitungan jarak
0LatihanUlangi latihan perhitungan jarak dari modul sebelumnya tetapi lakukan perhitungan menggunakan perpustakaan geopy 1Buka buku catatan bernama _17API, atau Antarmuka Program Aplikasi, memungkinkan satu program untuk berbicara dengan program lain. Banyak situs web atau layanan menyediakan API sehingga Anda dapat meminta informasi secara otomatis Untuk pemetaan dan analisis spasial, penggunaan API sangatlah penting. Untuk waktu yang lama, Google Maps API adalah API paling populer di web. API memungkinkan Anda untuk mengkueri server web dan mendapatkan hasil tanpa mengunduh data atau menjalankan perhitungan di mesin Anda Kasus penggunaan umum untuk menggunakan API untuk analisis spasial adalah
Penyediaan API semacam itu memiliki banyak cara untuk mengimplementasikan API. Ada standar seperti REST, SOAP, GraphQL dll. REST adalah standar paling populer untuk API web, dan untuk API geospasial. REST API digunakan melalui HTTP dan karenanya disebut API web Memahami JSON dan GeoJSONJSON adalah singkatan dari Notasi Objek JavaScript. Ini adalah format untuk menyimpan dan mengirim data, dan merupakan standar de-facto untuk pertukaran data oleh API. GeoJSON adalah ekstensi dari format JSON yang biasa digunakan untuk merepresentasikan data spasial Python memiliki modul _18 bawaan yang memiliki metode untuk membaca data json dan mengubahnya menjadi objek Python, dan sebaliknya. Dalam contoh ini, kami menggunakan modul _19 untuk menanyakan API yang dengan mudah melakukan konversi untuk kami. Tetapi akan berguna untuk mempelajari dasar-dasar bekerja dengan JSON dengan PythonData GeoJSON berisi fitur, dimana setiap fitur memiliki beberapa properti dan geometri 2Untuk mengonversi string JSON ke objek Python (mis. e. mem-parsing JSON), kita dapat menggunakan metode 20 3Sekarang kita telah mem-parsing string GeoJSON dan memiliki objek Python, kita dapat mengekstrak informasi darinya. Data disimpan dalam FeatureCollection - yang merupakan daftar fitur. Dalam contoh kami, kami hanya memiliki 1 fitur di dalam kumpulan fitur, sehingga kami dapat mengaksesnya dengan menggunakan indeks 0 4Representasi fitur adalah kamus, dan masing-masing item dapat diakses menggunakan tombol 5Modul conda install --channel conda-forge geopandas -y_19Untuk menanyakan server, kami mengirim permintaan GET dengan beberapa parameter dan server mengirimkan respons kembali. Modul _19 memungkinkan Anda mengirim permintaan HTTP dan mem-parsing respons menggunakan PythonRespon berisi data yang diterima dari server. Ini berisi status_code HTTP yang memberi tahu kami jika permintaan berhasil. Kode HTTP 200 adalah singkatan dari Sucess OK 6Menghitung Jarak menggunakan OpenRouteService APIOpenRouteService (ORS) menyediakan API gratis untuk perutean, matriks jarak, geocoding, pengoptimalan rute, dll. menggunakan data OpenStreetMap. Kami akan belajar cara menggunakan API ini melalui Python dan mendapatkan jarak dunia nyata antar kota Hampir semua API mengharuskan Anda untuk mendaftar dan mendapatkan kunci. Kunci digunakan untuk mengidentifikasi Anda dan menerapkan batas penggunaan sehingga Anda tidak membebani server. Kami akan mendapatkan kunci dari OpenRouteServie sehingga kami dapat menggunakan API mereka Kunjungi dan buat akun. Setelah akun Anda diaktifkan, kunjungi Dasbor Anda dan minta token. Pilih Standar sebagai jenis Token dan masukkan 23 sebagai nama Token. Klik BUAT TOKEN. Setelah dibuat, salin string panjang yang ditampilkan di bawah Kunci dan masukkan di bawah 7Kami akan menggunakan OpenRouteServices. Layanan ini menampilkan petunjuk arah mengemudi, bersepeda, atau berjalan kaki antara titik asal dan tujuan yang diberikan 8Kita dapat membaca _24 dalam format JSON dengan memanggil metode 25 di atasnyaResponsnya adalah objek GeoJSON yang mewakili arah berkendara antara 2 titik. Objek adalah kumpulan fitur dengan hanya 1 fitur. Kita dapat mengaksesnya menggunakan indeks 0. Properti fitur berisi _26 informasi yang memiliki data yang kami butuhkan _9Kita dapat mengekstrak _27 dan mengubahnya menjadi kilometer _0Anda dapat membandingkan jarak ini dengan jarak garis lurus dan melihat perbedaannya Pembatasan Tingkat APIBanyak API web menerapkan pembatasan kecepatan - memungkinkan permintaan dalam jumlah terbatas dari waktu ke waktu. Dengan komputer, mudah untuk menulis perulangan for, atau membuat beberapa program mengirim ratusan atau ribuan kueri per detik. Server mungkin tidak dikonfigurasi untuk menangani volume tersebut. Jadi penyedia menentukan batasan berapa banyak dan seberapa cepat kueri dapat dikirim OpenRouteService mencantumkan beberapa Pembatasan API. Paket gratis memungkinkan hingga 40 permintaan arah/menit Ada banyak perpustakaan yang tersedia untuk menerapkan berbagai strategi untuk membatasi laju. Tetapi kita dapat menggunakan modul _28 bawaan untuk menerapkan metode pembatasan laju yang sangat sederhanaLatihanDi bawah sel berisi kamus dengan 3 kota tujuan dan koordinatnya. Tulis 29 loop untuk mengulangi 30 kamus dan panggil fungsi 31 untuk mencetak jarak mengemudi nyata antara San Fransico dan setiap kota. Beri nilai batasi kueri Anda dengan menambahkan 32 di antara panggilan fungsi yang berurutan _1Buka buku catatan bernama _33Python menyediakan fungsi bawaan untuk membaca dan menulis file Untuk membaca sebuah file, kita harus mengetahui path dari file tersebut pada disk. Python memiliki modul bernama 34 yang memiliki fungsi pembantu yang membantu menangani sistem operasi. Keuntungan menggunakan modul _34 adalah kode yang Anda tulis akan berfungsi tanpa perubahan pada sistem operasi apa pun yang didukungUntuk membuka sebuah file, kita perlu mengetahui path ke file tersebut. Kami sekarang akan membuka dan membaca file 36 yang terletak di paket data Anda. Dalam paket data Anda, folder data ada di direktori ________12______37. Kita dapat membuat jalur relatif ke file menggunakan metode 38 _2Untuk membuka file, gunakan fungsi ________12______39 bawaan. Kami menentukan mode sebagai _40 yang berarti hanya-baca. Jika kita ingin mengubah isi file atau menulis file baru, kita akan membukanya dengan mode 41File input kami juga berisi karakter Unicode, jadi kami menetapkan 42 sebagai penyandianFungsi open() mengembalikan objek file. Kita dapat memanggil metode _43 untuk membaca konten file, satu baris dalam satu waktuMerupakan praktik yang baik untuk selalu menutup file setelah selesai. Untuk menutup file, kita harus memanggil metode 44 pada objek file _3Memanggil _43 untuk setiap baris file itu membosankan. Idealnya, kami ingin mengulang semua baris dalam file. Anda dapat mengulang melalui objek file seperti di bawah iniKita dapat mengulang setiap baris file dan meningkatkan variabel 46 dengan 1 untuk setiap iterasi loop. Pada akhirnya, nilai variabel hitungan akan sama dengan jumlah baris dalam file _4LatihanCetak 5 baris pertama file
_5Buka buku catatan bernama _47Comma-separated Values (CSV) adalah format file berbasis teks yang paling umum untuk berbagi data geospasial. Struktur file adalah 1 record data per baris, dengan masing-masing kolom dipisahkan oleh koma Secara umum, karakter pemisah disebut delimiter. Pembatas populer lainnya termasuk tab (\t), titik dua (. ) dan karakter titik koma (;). Membaca file CSV dengan benar mengharuskan kita untuk mengetahui pembatas mana yang digunakan, bersama dengan karakter kutipan untuk mengelilingi nilai bidang yang berisi spasi dari karakter pembatas. Karena membaca file teks yang dibatasi adalah operasi yang sangat umum, dan dapat menjadi rumit untuk menangani semua kasus sudut, Python hadir dengan perpustakaannya sendiri yang disebut 48 untuk kemudahan membaca dan menulis file CSV. Untuk menggunakannya, Anda hanya perlu mengimpornyaCara yang disukai untuk membaca file CSV menggunakan metode ________12______49. Yang secara langsung membaca setiap baris dan membuat kamus darinya - dengan nama kolom sebagai kunci dan nilai kolom sebagai nilai. Mari kita lihat cara membaca file menggunakan metode 50 _6 _7Menggunakan fungsi conda install --channel conda-forge geopandas -y_51Saat melakukan iterasi pada suatu objek, sering kali kita membutuhkan penghitung. Kita melihat pada contoh sebelumnya, bagaimana menggunakan variabel seperti 46 dan meningkatkannya dengan setiap iterasi. Ada cara mudah untuk melakukannya menggunakan fungsi 51 bawaan _8Kita dapat menggunakan enumerate() pada objek iterable apa pun dan mendapatkan tuple dengan indeks dan nilai iterable dengan setiap iterasi. Mari kita gunakan untuk mencetak 5 baris pertama dari objek DictReader _9Menggunakan conda install --channel conda-forge geopandas -y_54 pernyataanKode untuk penanganan file mengharuskan kita membuka file, melakukan sesuatu dengan objek file, lalu menutup file. Itu membosankan dan mungkin Anda lupa memanggil 44 pada file. Jika kode untuk memproses mengalami kesalahan, file bukan properti tertutup, ini dapat menyebabkan bug - terutama saat menulis fileCara yang disukai untuk bekerja dengan objek file menggunakan pernyataan 54. Ini menghasilkan kode yang lebih sederhana dan lebih jelas - yang juga memastikan objek file ditutup dengan benar jika terjadi kesalahanSeperti yang Anda lihat di bawah, kami membuka file dan menggunakan objek file 57 dalam pernyataan 54. Python menangani penutupan file saat eksekusi kode di dalam pernyataan selesai 0Memfilter barisKita dapat menggunakan pernyataan bersyarat saat mengulang baris, untuk memilih dan memproses baris yang memenuhi kriteria tertentu. Mari hitung berapa banyak kota dari negara tertentu yang ada di file Ganti variabel _59 dengan negara asal Anda di bawah ini 1Menghitung jarakMari terapkan keterampilan yang telah kita pelajari sejauh ini untuk menyelesaikan masalah yang lengkap. Kami ingin membaca file 60, menemukan semua kota dalam negara asal, menghitung jarak ke setiap kota dari kota asal dan menulis hasilnya ke file CSV baruPertama kita menemukan koordinat keluar dipilih 61 dari file. Ganti _61 di bawah ini dengan kampung halaman Anda atau kota besar di negara Anda. Perhatikan bahwa kami menggunakan bidang _63 untuk perbandingan nama kota, jadi pastikan variabel 61 berisi versi ASCII dari nama kota 2Sekarang kita dapat mengulang file, menemukan kota di negara asal yang dipilih dan memanggil fungsi 65 untuk menghitung jarak. Pada kode di bawah ini, kami hanya menghitung 5 kecocokan pertama 3Menulis fileDaripada mencetak hasilnya, mari tulis hasilnya ke file baru. Mirip dengan csv. DictReader(), ada pendamping 66 metode untuk menulis file. We create a 67 object and then write rows to it using the 68 methodPertama kita buat folder _69 untuk menyimpan hasilnya. Pertama-tama kita dapat memeriksa apakah folder tersebut ada dan jika tidak ada, kita dapat membuatnya 4 5Di bawah ini adalah kode lengkap untuk tugas kita membaca file, memfilternya, menghitung jarak dan menulis hasilnya ke file 6LatihanGanti variabel _61 dan 59 dengan kota asal dan negara asal Anda sendiri dan buat file CSV yang berisi jarak dari kota asal Anda ke setiap kota lain di negara AndaBuka buku catatan bernama _72Pandas adalah perpustakaan yang kuat untuk bekerja dengan data. Pandas provides fast and easy functions for reading data from files, and analyzing it Panda didasarkan pada perpustakaan lain yang disebut 73 - yang banyak digunakan dalam komputasi ilmiah. Panda memperluas _73 dan menyediakan tipe data baru seperti Indeks, Seri, dan Bingkai DataImplementasi panda sangat cepat dan efisien - jadi dibandingkan dengan metode pemrosesan data lainnya - menggunakan 75 hasilnya adalah kode yang lebih sederhana dan pemrosesan cepat. We will now re-implement our code for reading a file and computing distance using PandasBy convention, 75 is commonly imported as 77Reading Files _6A DataFrame is the most used Pandas object. You can think of a DataFrame being equivalent to a Spreadsheet or an Attribute Table of a GIS layer Pandas provide easy methods to directly read files into a DataFrame. You can use methods such as 78, 79, 80 and so forth to read a variety of formats. Here we will read the 36 file using 78 methodOnce the file is read and a DataFrame object is created, we can inspect it using the 83 methodThere is also a 84 method that shows basic information about the dataframe, such as number of rows/columns and data types of each columnFiltering DataPandas have many ways of selecting and filtered data from a dataframe. We will now see how to use the to filter the dataframe to rows that match a condition 8 9Filtered dataframe is a just view of the original data and we cannot make changes to it. We can save the filtered view to a new dataframe using the 85 method _0 _1 _2To locate a particular row or column from a dataframe, Pandas providea 86 and 87 methods - that allows you to locate particular slices of data. Learn about in Pandas. Here we can use 87 to find the row matching the 61 name. Since 87 uses index, the 0 here refers to the first row _3Now that we have filtered down the data to a single row, we can select individual column values using column names _4Performing calculationsLet’s learn how to do calculations on a dataframe. We can iterate over each row and perform some calculations. But pandas provide a much more efficient way. You can use the 91 method to run a function on each row. This is fast and makes it easy to complex computations on large datasetsThe 91 function takes 2 arguments. A function to apply, and the axis along which to apply it. 93 means it will be applied to columns and 94 means it will apply to rows _5We can add these results to the dataframe by simply assigning the result to a new column _6We are done with our analysis and ready to save the results. We can further filter the results to only certain columns _7Let’s rename the 63 column to give it a more readable name _8Now that we have added filtered the original data and computed the distance for all cities, we can save the resulting dataframe to a file. Similar to read methods, Pandas have several write methods, such as 96, 97 etcHere we will use the 96 method to write a CSV file. Pandas assigns an index column (unique integer values) to a dataframe by default. We specify 99 so that this index is not added to our output _9LatihanYou will notice that the output file contains a row with the 61 as well. Ubah kerangka data _01 untuk menghapus baris ini dan menulis hasilnya ke filePetunjuk. Gunakan metode pemfilteran Boolean yang telah kita pelajari sebelumnya untuk memilih baris yang tidak cocok dengan 61 _00GeoPandas memperluas perpustakaan Pandas untuk mengaktifkan operasi spasial. Ini menyediakan tipe data baru seperti GeoDataFrame dan GeoSeries yang merupakan subclass dari Pandas DataFrame and Series dan memungkinkan pemrosesan data vektor yang efisien dengan Python GeoPanda memanfaatkan banyak perpustakaan spasial lain yang banyak digunakan - tetapi GeoPanda menyediakan antarmuka yang mirip dengan Panda yang membuatnya intuitif untuk digunakan dengan analisis spasial. GeoPandas dibangun di atas pustaka berikut yang memungkinkannya sadar spasial
Kami akan melakukan tugas geoproses yang menampilkan berbagai fitur perpustakaan ini dan menunjukkan cara melakukan pemrosesan data geo dengan Python. Tugasnya adalah mengambil lapisan data jalan dari OpenStreetMap dan menghitung total panjang Jalan Raya Nasional untuk setiap distrik di negara bagian. Masalahnya dijelaskan secara rinci dalam kursus saya dan menunjukkan langkah-langkah yang diperlukan untuk melakukan analisis ini di QGIS. Kami akan mereplikasi contoh ini dengan Python Dengan konvensi, _50 umumnya diimpor sebagai 04Membaca Data Spasial _01GeoPandas memiliki metode _05 yang mampu membuka berbagai macam dataset vektor, termasuk file zip. Di sini kita akan membuka GeoPackage 06 dan membaca layer bernama 07. Hasil dari metode baca adalah GeoDataFrame _02GeoDataFrame berisi kolom khusus yang disebut geometri. Semua operasi spasial pada DataFrame diterapkan pada kolom geometri. Kolom geometri dapat diakses menggunakan atribut 08 _03Filtering DataSeseorang dapat menggunakan metode pemfilteran Panda standar untuk memilih subset dari GeoDataFrame. Selain itu, GeoPandas juga menyediakan cara untuk mensubset data berdasarkan kotak pembatas dengan pengindeks 09Untuk analisis kami, kami perlu menerapkan filter untuk mengekstrak hanya segmen jalan dengan atribut 10 dimulai dengan 'NH' - menunjukkan jalan raya nasional. Kita dapat menerapkan pemfilteran boolean menggunakan metode 11 Panda dengan ekspresi reguler _04Bekerja dengan ProyeksiBerurusan dengan proyeksi adalah aspek kunci dalam bekerja dengan data spasial. GeoPandas menggunakan pustaka _12 untuk menetapkan dan mengelola proyeksi. Setiap GeoDataFrame sebagai 13 atribut yang berisi info proyeksi. Kumpulan data sumber kami ada di EPSG. 4326 WGS84 CRSKarena tugas kita adalah menghitung panjang garis, kita perlu menggunakan Projected CRS. Kita dapat menggunakan metode _14 untuk memproyeksi ulang GeoDataFrame _05Sekarang lapisan telah diproyeksikan ulang, kita dapat menghitung panjang setiap geometri menggunakan atribut 15. Hasilnya akan dalam meter. Kita dapat menambahkan panjang garis di kolom baru bernama 15 _06Kami dapat menerapkan operasi statistik pada kolom DataFrame. Di sini kita dapat menghitung panjang total jalan raya nasional di negara bagian dengan memanggil metode 17 _07Melakukan Penggabungan spasialAda dua cara untuk menggabungkan kumpulan data di geopanda - gabungan tabel dan gabungan spasial. Untuk tugas kita, kita membutuhkan informasi tentang distrik mana yang dimiliki setiap ruas jalan. Hal ini dapat dicapai dengan menggunakan lapisan spasial lain untuk kabupaten dan melakukan penggabungan spasial untuk mentransfer atribut lapisan kabupaten ke segmen jalan yang cocok. _06 berisi lapisan yang disebut 19 dengan batas distrik dan nama _08Sebelum menggabungkan layer ini ke jalan, kita harus memproyeksikan ulang agar cocok dengan CRS layer jalan _09Penggabungan spasial dilakukan menggunakan metode 20. Dibutuhkan 2 argumen inti
Untuk tugas kita, kita dapat melakukan join kiri dan menambahkan atribut distrik yang memotong jalan _10Statistik GrupBingkai geodata yang dihasilkan sekarang memiliki kolom yang cocok dari fitur distrik yang berpotongan. Sekarang kita dapat menjumlahkan panjang jalan dan mengelompokkannya berdasarkan distrik. Jenis Statistik Grup ini dilakukan dengan menggunakan metode 23 Panda _11Hasil dari metode _23 adalah Seri Pandas. Itu dapat disimpan ke file CSV menggunakan metode 96 _12LatihanSebelum menulis output ke file, bulatkan angka jarak ke bilangan bulat Buka buku catatan bernama _26Operasi umum dalam analisis spasial adalah mengambil data non-spasial, seperti file CSV, dan membuat dataset spasial darinya menggunakan informasi koordinat yang terdapat dalam file. GeoPandas menyediakan cara mudah untuk mengambil data dari file teks terbatas, membuat geometri, dan menulis hasilnya sebagai kumpulan data spasial Kami akan membaca file tempat yang dibatasi tab, memfilternya ke kelas fitur, membuat GeoDataFrame, dan mengekspornya sebagai file GeoPackage _13 _14Membaca File yang Dibatasi TabData sumber berasal dari GeoNames - database gratis dan terbuka dari nama geografis dunia. Ini adalah database besar yang berisi jutaan catatan per negara. Data didistribusikan sebagai file teks tingkat negara dalam format tab-delimited. File tidak berisi baris header dengan nama kolom, jadi kita perlu menentukannya saat membaca data. Format data dijelaskan secara rinci di halaman Ekspor Data Kami menentukan pemisah sebagai \t (tab) sebagai argumen untuk metode 78. Perhatikan bahwa file untuk AS memiliki lebih dari 2 juta catatan _15Filtering DataData input sebagai kolom _28 mengkategorikan tempat menjadi 9 kelas fitur. Kita dapat memilih semua baris dengan nilai 29 dengan kategori mountain,hill,rock… _16Membuat GeometriGeoPandas memiliki fungsi conveinent 30 yang membuat kolom Geometri dari koordinat X dan Y. Kita kemudian dapat mengambil kerangka data Pandas dan membuat GeoDataFrame dengan menentukan CRS dan kolom geometri _17Menulis FileKita dapat menulis GeoDataFrame yang dihasilkan ke salah satu format data vektor yang didukung. Di sini kami menulisnya sebagai file GeoPackage baru Anda dapat membuka geopackage yang dihasilkan di GIS dan melihat datanya _18LatihanPaket data berisi beberapa file teks geonames dari berbagai negara di folder 31. Tulis kode untuk membaca semua file, gabungkan dan ekstrak fitur gunung ke satu geopackage
_19Buka buku catatan bernama _34NumPy (Python Numerik) adalah pustaka Python penting untuk perhitungan ilmiah. Perpustakaan seperti Pandas dan GeoPandas dibangun di atas NumPy Ini memberikan cara yang cepat dan efisien untuk bekerja dengan Array. Dalam domain analisis data spasial, ini memainkan peran penting dalam bekerja dengan data Raster - seperti citra satelit, foto udara, data elevasi, dll. Karena struktur yang mendasari data raster adalah larik 2D untuk setiap pita - mempelajari NumPy sangat penting dalam memproses data raster menggunakan Python Dengan konvensi, _73 umumnya diimpor sebagai 36ArrayObjek array di NumPy disebut 37. Ini menyediakan banyak fungsi pendukung yang membuat bekerja dengan array menjadi cepat dan mudah. Array mungkin tampak seperti Daftar Python, tetapi 37 hingga 50x lebih cepat dalam operasi matematika. Anda dapat membuat larik menggunakan metode ________16______39. Seperti yang Anda lihat, objek yang dihasilkan bertipe 40 _20Array dapat memiliki dimensi apapun. Kita dapat membuat array 2D seperti di bawah ini. _37 objek memiliki properti 42 yang menyimpan jumlah dimensi array. Anda juga dapat memeriksa ukuran array menggunakan properti ________16______43 _21Anda dapat mengakses elemen array seperti daftar Python menggunakan 44 notasiOperasi LarikOperasi matematika pada array numpy mudah dan cepat. NumPy sebanyak mungkin fungsi bawaan untuk operasi umum Anda juga dapat menggunakan operasi fungsi pada array _22Jika objeknya adalah objek numpy, Anda juga bisa menggunakan operator Python Anda juga dapat menggabungkan objek array dan skalar. Operasi skalar diterapkan ke setiap item dalam larik _23Konsep penting dalam NumPy adalah Array Axes. Mirip dengan perpustakaan 75, Dalam larik 2D, Sumbu 0 adalah arah baris dan Sumbu 1 adalah arah kolom. Diagram di bawah menunjukkan arahMari kita lihat bagaimana kita bisa menerapkan fungsi pada sumbu tertentu. Di sini ketika kita menerapkan fungsi _46 pada sumbu-0 dari array 2D, ini memberi kita array 1D dengan nilai yang dijumlahkan di seluruh baris _24LatihanJumlahkan array 47 sepanjang Axis-1. Menurut Anda apa hasilnya? _25Buka buku catatan bernama _48RasterIO adalah perpustakaan modern untuk bekerja dengan data geospasial dalam format grid. Ini unggul dalam menyediakan cara mudah untuk membaca/menulis data raster dan mengakses masing-masing band dan piksel sebagai 73 arrayRasterIO dibangun di atas GDAL (Perpustakaan Abstraksi Data Geospasial) yang populer. GDAL ditulis dalam C++ sehingga API Python yang disediakan oleh GDAL tidak terlalu intuitif untuk pengguna Python. RaserIO bertujuan untuk memudahkan pengguna Python menggunakan pustaka GDAL yang mendasarinya dengan cara yang intuitif Pada bagian ini, kita akan mengambil 4 ubin SRTM individu di sekitar Mt. wilayah Everest dan menggabungkannya menjadi satu GeoTiff menggunakan RasterIO _26Membaca Data RasterRasterIO dapat membaca format raster apa pun yang didukung oleh pustaka GDAL. Kita dapat memanggil metode _39 dengan jalur file raster. Kumpulan data yang dihasilkan berperilaku sangat mirip dengan objek File Python _27Anda dapat memeriksa informasi tentang raster menggunakan atribut 51Properti penting adalah transformasi dataset. Transformasi berisi resolusi piksel dari kumpulan data dan koordinat baris dan kolom di sudut kiri atas kumpulan data _28Untuk membaca nilai piksel, kita perlu memanggil metode 52 dengan mengirimkannya nomor indeks pita. Mengikuti konvensi GDAL, band diindeks dari 1. Karena dataset kami hanya berisi 1-band, kami dapat membacanya sebagai berikut _29Terakhir, ketika kita selesai dengan dataset, kita harus menutupnya. It is especially important when writing a dataset Merging DatasetsLet’s see how we can read the 4 individual tiles and mosaic them together. RasterIO provides multiple sub-modules for various raster operations. We can use the 53 module to carry out this operationWe first find all the individual files in the directory using the 32 function 30The rasterio. merge module has a 55 method that takes a list of datasets and returns the merged dataset. So we create an empty list, open each of the files and append it to the list 31We can pass on the list of tile dataset to the merge method, which will return us the merged data and a new transform which contains the updated extent of the merged raster 32We save the data and the transform to separate variables 33Verify that the resulting array shape the sum of individual rasters Writing Raster DataSimilar to regular Python files, to create a new file, we can open the output file in the write mode. RasterIO provides a 56 method that we can use to write individual bands 34We need to specify many metadata parameters to initialize the output dataset. Some of these parameter values can be directly copied from the input files, such as 13, 58, 59 etc. , while others can be obtained from the merged dataset, such as 60 and 61Remember to call the 44 method which will finalize the file and write the data to disk 35LatihanThe merged array represents elevation values. The extent of the tiles cover Mt. Everest. Read the resulting raster and find the maximum elevation value contained in it 36So far we have used Jupyter Notebooks to write and execute Python code. A notebook is a great choice to interactively explore, visualize and document workflows. But they are not suited for writing scripts for automation. If you have tasks that are long running or want to execute certain tasks on a schedule, you have to write scripts in a standalone 63 file and run it from a Terminal or ConsoleGet a Text EditorAny kind of software development requires a good text editor. If you already have a favorite text editor or an IDE (Integrated Development Environment), you may use it for this course. Otherwise, each platform offers a wide variety of free or paid options for text editors. Choose the one that fits your needs Below are my recommendations editors that are simple to use for beginners
Writing a ScriptCopy the following code and paste it in your text editor. Browse to the data package directory and save the file as 65. Make sure that there is no 66 extension at the end 37Executing a ScriptWindows
38
39Mac and Linux
41
39To achieve mastery in programming, you need to practice writing code and solve many diverse type of problems. I strongly recommend picking up a project and implementing it in Python to improve your skills. You can also take other courses to learn aspects of Python and spatial data processing Lakukan ProyekI have some recommendation for projects that are a good fit for beginners, but are still challenging to help you become proficient. You can try to work on as many of the following problems as you like Is Python or R better for spatial analysis?Python has unquestionably become the primary computer language used by geospatial analysts and researchers in their work with GIS and spatial analysis in general .
How to use Python in GIS?Python can be run directly within ArcGIS by clicking on the Python button found on the standard toolbar . By clicking the button, ArcMap's python window opens. Jendela python dapat ditambatkan dengan menyeretnya ke bilah alat atau dapat diapungkan di atas ArcMap.
Mengapa Python berharga untuk analisis GIS?Mungkin bagi pengguna alasan utama adopsi Python adalah karena fakta bahwa Python mudah dipelajari, bagus dalam manipulasi data, dan memiliki banyak library berguna yang . Graser menyoroti Pandas dan karyanya sendiri dengan GeoPandas. . Graser highlighted Pandas and her own work with GeoPandas.
Sebutkan 3 jenis data geospasial?Vektor dan atribut . Informasi deskriptif tentang lokasi seperti titik, garis, dan poligon. Titik awan. Kumpulan titik-titik yang dipetakan bersama yang dapat dikontekstur ulang sebagai model 3D. Citra raster dan satelit. Gambar dunia kita beresolusi tinggi, diambil dari atas. |