|
65 | 65 | {
|
66 | 66 | "cell_type": "markdown",
|
67 | 67 | "id": "3cfd0549-f677-43b3-9eda-0182a8a27ef0",
|
68 |
| - "metadata": { |
69 |
| - "jp-MarkdownHeadingCollapsed": true |
70 |
| - }, |
| 68 | + "metadata": {}, |
71 | 69 | "source": [
|
72 | 70 | "## Ratkaisu"
|
73 | 71 | ]
|
|
199 | 197 | "id": "1f6c04d5-d59c-4f35-88e2-3b533d7b6678",
|
200 | 198 | "metadata": {},
|
201 | 199 | "source": [
|
202 |
| - "Projisoi salamahavainnot samaan koordinaattijärjestelmään, kuin kohta käytettävä kunta-aineisto (epsg=3067). Huomaa, että sijainnit ovat nyt asteita, eli emme voi suoraan asettaa ETRS89 / TM35FIN koordinaattijärjestelmää.\n", |
| 200 | + "Projisoi salamahavainnot samaan koordinaattijärjestelmään, kuin kohta käytettävä kunta-aineisto (`epsg=3067`). Huomaa, että sijainnit ovat nyt asteita - aineisto on wgs 84 -koordinaatistossa. Emme siis voi suoraan asettaa ETRS89 / TM35FIN koordinaattijärjestelmää.\n", |
203 | 201 | "\n",
|
204 | 202 | "1. Aseta ensin `geo_lightnings`-GeoDataFrame wgs 84 koordinaattijärjestelmään (`set_crs`). Epsg-koodi on 4326.\n",
|
205 | 203 | "2. Uudelleenprojisoi (`to_crs`) vasta kun koordinaattijärjestelmä on asetettu. Ylikirjoita `geo_lightnings`-muuttuja uudella epsg 3067 -versiolla."
|
|
317 | 315 | "id": "14baae2c-591b-41d9-a7dd-009f0affce1f",
|
318 | 316 | "metadata": {},
|
319 | 317 | "source": [
|
320 |
| - "## Liitos sijainnin perusteella\n", |
| 318 | + "## Harjoitus - liitos sijainnin perusteella\n", |
321 | 319 | "\n",
|
322 | 320 | "Nyt voimme edetä tekemään sijainteihin perustuvan liitoksen salamahavaintojen ja kuntien välillä. Tarkoituksena on, että saisimme jokaiseen salamaan tiedon siitä, minkä kunnan alueelle se iski.\n",
|
323 | 321 | "\n",
|
324 |
| - "Tämä kannattaa toteuttaa `sjoin` eli spatial join -metodilla. Yhdistetään siis salamahavaintoihin tieto kunnista, perusteena, että havainto on kunnan alueella (\"within\"). Liitoksen tyypiksi otetaan \"left\", sillä haluamme tuloksena vain salamahavainnot." |
| 322 | + "Tämä kannattaa toteuttaa `sjoin`, eli spatial join, -funktiolla. Yhdistetään siis salamahavaintoihin tieto kunnista, perusteena, että havainto on kunnan alueella.\n", |
| 323 | + "\n", |
| 324 | + "1. Käytä geopandasin `sjoin`-funktiota (`gpd.sjoin`)\n", |
| 325 | + "2. Valitse parametreihin `left_df` ja `right_df` halutut GeoDataFramet, eli: `left_df=geo_lightnings` ja `right_df=municipalities`.\n", |
| 326 | + "3. Haluamme tiedon sen perusteella, minkä kunnan sisällä havainto on. Valitse siis predikaatiksi, eli `predicate`-parametrin arvoksi, `\"within\"`.\n", |
| 327 | + "4. Haluamme tuloksena salamahavainnot, joihin on lisättynä tieto kunnasta, jonne salama on iskenyt. Annetaan siis `how`-parametrille arvoksi `\"left\"`: Näin tuloksena on vain salamahavainnot.\n", |
| 328 | + "5. Kun liitos näyttää toimivan, tallenna tuloksena syntyvä GeoDataFrame muuttujaan `lightnings_with_municipality`." |
| 329 | + ] |
| 330 | + }, |
| 331 | + { |
| 332 | + "cell_type": "code", |
| 333 | + "execution_count": null, |
| 334 | + "id": "ccb44cf2-38a7-4d09-9f6a-2fab93869f3b", |
| 335 | + "metadata": {}, |
| 336 | + "outputs": [], |
| 337 | + "source": [ |
| 338 | + "# Kirjoita ratkaisu\n" |
| 339 | + ] |
| 340 | + }, |
| 341 | + { |
| 342 | + "cell_type": "markdown", |
| 343 | + "id": "e30768ff-f50c-491e-b4c5-3078203b9a5e", |
| 344 | + "metadata": { |
| 345 | + "jp-MarkdownHeadingCollapsed": true |
| 346 | + }, |
| 347 | + "source": [ |
| 348 | + "## Ratkaisu" |
325 | 349 | ]
|
326 | 350 | },
|
327 | 351 | {
|
|
337 | 361 | },
|
338 | 362 | "outputs": [],
|
339 | 363 | "source": [
|
340 |
| - "lightnings_with_municipality = geo_lightnings.sjoin(\n", |
341 |
| - " municipalities,\n", |
| 364 | + "lightnings_with_municipality = gpd.sjoin(\n", |
| 365 | + " left_df=geo_lightnings,\n", |
| 366 | + " right_df=municipalities,\n", |
342 | 367 | " predicate=\"within\",\n",
|
343 | 368 | " how=\"left\",\n",
|
344 | 369 | ")"
|
|
479 | 504 | "metadata": {},
|
480 | 505 | "outputs": [],
|
481 | 506 | "source": [
|
482 |
| - "municipalities = municipalities.merge(\n", |
483 |
| - " lightning_counts,\n", |
| 507 | + "municipalities = pd.merge(\n", |
| 508 | + " left=municipalities,\n", |
| 509 | + " right=lightning_counts,\n", |
484 | 510 | " left_on=\"nimi\",\n",
|
485 | 511 | " right_on=\"nimi\",\n",
|
486 | 512 | " how=\"left\",\n",
|
|
895 | 921 | "name": "python",
|
896 | 922 | "nbconvert_exporter": "python",
|
897 | 923 | "pygments_lexer": "ipython3",
|
898 |
| - "version": "3.12.7" |
| 924 | + "version": "3.12.8" |
899 | 925 | }
|
900 | 926 | },
|
901 | 927 | "nbformat": 4,
|
|
0 commit comments