|
433 | 433 | "metadata": {
|
434 | 434 | "scrolled": false,
|
435 | 435 | "slideshow": {
|
436 |
| - "slide_type": "fragment" |
| 436 | + "slide_type": "subslide" |
437 | 437 | }
|
438 | 438 | },
|
439 | 439 | "outputs": [],
|
|
449 | 449 | }
|
450 | 450 | },
|
451 | 451 | "source": [
|
452 |
| - "## Using GeoDataFrames in SRAI" |
453 |
| - ] |
454 |
| - }, |
455 |
| - { |
456 |
| - "cell_type": "code", |
457 |
| - "execution_count": null, |
458 |
| - "metadata": { |
459 |
| - "slideshow": { |
460 |
| - "slide_type": "-" |
461 |
| - } |
462 |
| - }, |
463 |
| - "outputs": [], |
464 |
| - "source": [ |
465 |
| - "poland_gdf = countries[countries[\"NAME\"] == \"Poland\"]\n", |
466 |
| - "poland_gdf" |
467 |
| - ] |
468 |
| - }, |
469 |
| - { |
470 |
| - "cell_type": "code", |
471 |
| - "execution_count": null, |
472 |
| - "metadata": { |
473 |
| - "slideshow": { |
474 |
| - "slide_type": "subslide" |
475 |
| - } |
476 |
| - }, |
477 |
| - "outputs": [], |
478 |
| - "source": [ |
479 |
| - "from srai.regionalizers import AdministrativeBoundaryRegionalizer\n", |
480 |
| - "\n", |
481 |
| - "regionalizer = AdministrativeBoundaryRegionalizer(admin_level=4)\n", |
482 |
| - "regions_gdf = regionalizer.transform(poland_gdf)\n", |
483 |
| - "regions_gdf.head(5)" |
| 452 | + "## Let's go deeper - [Shapely](https://shapely.readthedocs.io/en/stable/manual.html) objects\n", |
| 453 | + "- GeoPandas uses Shapely - geometry column\n", |
| 454 | + "- geometric operations" |
484 | 455 | ]
|
485 | 456 | },
|
486 | 457 | {
|
487 | 458 | "cell_type": "code",
|
488 | 459 | "execution_count": null,
|
489 | 460 | "metadata": {
|
490 | 461 | "slideshow": {
|
491 |
| - "slide_type": "subslide" |
| 462 | + "slide_type": "fragment" |
492 | 463 | }
|
493 | 464 | },
|
494 | 465 | "outputs": [],
|
495 | 466 | "source": [
|
496 |
| - "regions_gdf.explore()" |
497 |
| - ] |
498 |
| - }, |
499 |
| - { |
500 |
| - "cell_type": "markdown", |
501 |
| - "metadata": { |
502 |
| - "slideshow": { |
503 |
| - "slide_type": "slide" |
504 |
| - } |
505 |
| - }, |
506 |
| - "source": [ |
507 |
| - "## Let's go deeper - [Shapely](https://shapely.readthedocs.io/en/stable/manual.html) objects\n", |
508 |
| - "- GeoPandas uses Shapely - geometry column\n", |
509 |
| - "- geometric operations" |
| 467 | + "pl_de_gdf = countries[countries[\"NAME\"].isin([\"Poland\", \"Germany\"])]\n", |
| 468 | + "pl_de_gdf" |
510 | 469 | ]
|
511 | 470 | },
|
512 | 471 | {
|
|
519 | 478 | },
|
520 | 479 | "outputs": [],
|
521 | 480 | "source": [
|
522 |
| - "type(regions_gdf.iloc[2].geometry)" |
| 481 | + "merged_geom = pl_de_gdf.unary_union\n", |
| 482 | + "merged_geom" |
523 | 483 | ]
|
524 | 484 | },
|
525 | 485 | {
|
|
532 | 492 | },
|
533 | 493 | "outputs": [],
|
534 | 494 | "source": [
|
535 |
| - "print(regions_gdf.iloc[2].name)\n", |
536 |
| - "voivodeship_region = regions_gdf.iloc[2:3]\n", |
537 |
| - "voivodeship_geom = voivodeship_region.geometry[0]\n", |
538 |
| - "voivodeship_geom" |
| 495 | + "type(merged_geom)" |
539 | 496 | ]
|
540 | 497 | },
|
541 | 498 | {
|
|
559 | 516 | },
|
560 | 517 | "outputs": [],
|
561 | 518 | "source": [
|
562 |
| - "voivodeship_geom.area" |
| 519 | + "merged_geom.area" |
563 | 520 | ]
|
564 | 521 | },
|
565 | 522 | {
|
|
573 | 530 | "outputs": [],
|
574 | 531 | "source": [
|
575 | 532 | "## minimum bounding region\n",
|
576 |
| - "voivodeship_geom.bounds" |
| 533 | + "merged_geom.bounds" |
577 | 534 | ]
|
578 | 535 | },
|
579 | 536 | {
|
|
584 | 541 | }
|
585 | 542 | },
|
586 | 543 | "source": [
|
587 |
| - "## Let's create a geometry object" |
| 544 | + "## Creating a geometry manually" |
588 | 545 | ]
|
589 | 546 | },
|
590 | 547 | {
|
|
598 | 555 | "outputs": [],
|
599 | 556 | "source": [
|
600 | 557 | "from shapely.geometry import LineString\n",
|
601 |
| - "bounds = voivodeship_geom.bounds\n", |
| 558 | + "bounds = merged_geom.bounds\n", |
602 | 559 | "line = LineString(\n",
|
603 | 560 | " [(bounds[0], bounds[1]),\n",
|
604 | 561 | " (bounds[2], bounds[3]),]\n",
|
|
627 | 584 | },
|
628 | 585 | "outputs": [],
|
629 | 586 | "source": [
|
630 |
| - "gpd.GeoSeries([line, voivodeship_geom]).plot(cmap='tab10')" |
| 587 | + "gpd.GeoSeries([line, merged_geom]).plot(cmap='tab10')" |
631 | 588 | ]
|
632 | 589 | },
|
633 | 590 | {
|
|
651 | 608 | },
|
652 | 609 | "outputs": [],
|
653 | 610 | "source": [
|
654 |
| - "line.within(voivodeship_geom)" |
| 611 | + "line.within(merged_geom)" |
655 | 612 | ]
|
656 | 613 | },
|
657 | 614 | {
|
|
664 | 621 | },
|
665 | 622 | "outputs": [],
|
666 | 623 | "source": [
|
667 |
| - "line.intersects(voivodeship_geom)" |
| 624 | + "line.intersects(merged_geom)" |
668 | 625 | ]
|
669 | 626 | },
|
670 | 627 | {
|
|
679 | 636 | "You can use the same spatial operations as in Shapely, on entire GeoDataFrames."
|
680 | 637 | ]
|
681 | 638 | },
|
| 639 | + { |
| 640 | + "cell_type": "code", |
| 641 | + "execution_count": null, |
| 642 | + "metadata": {}, |
| 643 | + "outputs": [], |
| 644 | + "source": [ |
| 645 | + "pl_de_gdf" |
| 646 | + ] |
| 647 | + }, |
682 | 648 | {
|
683 | 649 | "cell_type": "markdown",
|
684 | 650 | "metadata": {
|
|
752 | 718 | },
|
753 | 719 | "outputs": [],
|
754 | 720 | "source": [
|
755 |
| - "gpd.GeoSeries([line, voivodeship_geom]).plot(cmap='tab10')" |
| 721 | + "gpd.GeoSeries([line, merged_geom]).plot(cmap='tab10')" |
756 | 722 | ]
|
757 | 723 | },
|
758 | 724 | {
|
|
768 | 734 | "from srai.regionalizers import geocode_to_region_gdf, H3Regionalizer\n",
|
769 | 735 | "from utils import CB_SAFE_PALLETE\n",
|
770 | 736 | "\n",
|
771 |
| - "regionized = H3Regionalizer(resolution=6).transform(voivodeship_region)\n", |
| 737 | + "regionized = H3Regionalizer(resolution=3).transform(pl_de_gdf)\n", |
772 | 738 | "regionized[\"intersects\"] = regionized.intersects(line)\n",
|
773 | 739 | "regionized.explore(\"intersects\")"
|
774 | 740 | ]
|
|
816 | 782 | {
|
817 | 783 | "cell_type": "code",
|
818 | 784 | "execution_count": null,
|
819 |
| - "metadata": {}, |
| 785 | + "metadata": { |
| 786 | + "slideshow": { |
| 787 | + "slide_type": "fragment" |
| 788 | + } |
| 789 | + }, |
820 | 790 | "outputs": [],
|
821 | 791 | "source": [
|
822 | 792 | "from srai.loaders import OSMOnlineLoader\n",
|
|
926 | 896 | "name": "python",
|
927 | 897 | "nbconvert_exporter": "python",
|
928 | 898 | "pygments_lexer": "ipython3",
|
929 |
| - "version": "3.10.11" |
| 899 | + "version": "3.10.12" |
930 | 900 | },
|
931 | 901 | "rise": {
|
932 | 902 | "controls": false,
|
|
0 commit comments