Joris Van den Bossche
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee
    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee
  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       owned this note    owned this note      
    Published Linked with GitHub
    Subscribed
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    Subscribe
    # GeoPandas Meeting Notes See the notes from older meetings in [the archive](https://github.com/geopandas/community/wiki/Community-Meeting-Notes-Archive). Meeting link: https://numfocus-org.zoom.us/j/88434008375?pwd=nKj4ll6LjvY2RgMm9qMRfNuOyUsbKZ.1 ## 2025-10-30 Attendees: Pieter Roggemans, Brendan Ward, Matt Richards, Joris Van den Bossche - SSI grant not ultimately accepted; may be opportunity for smaller one - pandas 3: - maybe a release candidate in next few weeks - pyogrio: - adding libspatialite to wheels now works - https://github.com/geopandas/pyogrio/pull/546 - issues around including rrtopo optional dependency, which is GPL - for now leave it out; investigate implications of GPL license if folks ask for it - release the GIL: - https://github.com/geopandas/pyogrio/pull/572 - potentially slowdowns / overheads for frequently releasing and reacquiring the GIL - datetime PR: - https://github.com/geopandas/pyogrio/pull/486 - let's go for the separate keywords - try to have a release in next few weeks ## 2025-09-25 Attendees: Martin Fleischmann, Pieter Roggemans, Brendan Ward, Joris van den Bossche - SSI grant submitted (2 year grant, starting in March 2026) - general maintenance - community survey - integration with Spherely - SDG on plotting - planning to aim for same API as we have now, possibly new keywords - internals will change - NumFOCUS CoC - NumFOCUS would take over the reporting - Martin will submit request to NumFOCUS to adopt this - Exposing pyogrio functions on geopandas namespace - https://github.com/geopandas/geopandas/pull/3633 - probably fine to expose pyogrio's `read_info` as `read_file_info` and return dict - may want to indicate the dtypes that you get in geopandas (could be added later) - may want to add a method for `list_drivers` or `list_file_drivers` - GeoArrow vs native - https://github.com/geopandas/geopandas/pull/3495 - maybe add `native` as an alias for now - can also specify the exact GeoArrow encoding type (`point` instead of `geoarrow.point`) - Pyogrio 0.12 release - https://github.com/geopandas/pyogrio/issues/560 - should add Python 3.14 wheels - drop 3.9 (3.10 later) - drop GDAL 3.5 and 3.6 (can drop some of the old GDAL conditionals in the code) - for manylinux2014, maybe keep until next time it breaks - may want to add VCPKG feature flag for arrow ADBC (not yet merged), to enable reading from DuckDB - optimizing reads with filter: https://github.com/geopandas/pyogrio/pull/577 - may want to drop the non-arrow reader and use pyarrow (if available) or nanoarrow for reading and converting to numpy arrays - releasing the GIL when possible: https://github.com/geopandas/pyogrio/pull/572 - improving datetime support: https://github.com/geopandas/pyogrio/pull/486 ## 2025-08-28 Attendees: Pieter Roggemans, Brendan Ward - pyogrio: - discussed build issues around libspatialite - for next time - drop Python 3.9 - drop manylinux2014 - drop older GDAL? - datetime PR ## 2025-08-07 Attendees: Martin Fleischmann, Rok Mihevc, Pieter Roggemans, Joris van den Bossche - NumFOCUS SDG plotting project: granted! - SSI Software Maintenance Fund - passed to the second round - GeoParquet / Parquet logical geometry/geography data types (https://github.com/geopandas/geopandas/issues/3632) - pyogrio - 0.12? - Drop Python 3.9 (and Python 3.10?) - GDAL 3.11 in wheel? - LIBKML in wheel? - Add Python 3.14 support (will require updating the manylinux base, last time this gave troubles) - [Datetime improvement PR](https://github.com/geopandas/pyogrio/pull/486) - [Json fields issue ?](https://github.com/geopandas/pyogrio/issues/445#issuecomment-3160620127) ## 2025-06-26 Attendees: Martin Fleischmann, Brendan Ward, Matt Richards, Pieter Roggemans, Joris van den Bossche - Geopandas 1.1.1 patch for regressions - cut soon from `main` - Removal of versioneer - [3589](https://github.com/geopandas/geopandas/pull/3589) - needs to be tested with the wheel-building action but otherwise seems fine - Geodetic computations merge soon? - [3574](https://github.com/geopandas/geopandas/pull/3574) - keep the option around but follow pandas model of opt-in for future behaviour - pyogrio PR 486: [Improve datetime support](https://github.com/geopandas/pyogrio/pull/486) - Default behaviour when reading: keep current behaviour (convert to UTC) - Add parameter in `read_dataframe` to be able to roundtrip data correctly: - datetime_as_object : bool, default False Cast datetimes to objects. If False, all timestamps are converted to datetime64 dtype. - NumFOCUS-related reports - check-in with Kari Hall and Arliss - CoC - waiting for the next round to see how it works - SDG - submitted [plotting proposal](https://github.com/numfocus/small-development-grant-proposals/issues/25) - Jul 11 notification - SSI Software Maintenance Fund - Submitted Expression of Interest - 7 July feedback ## 2025-05-15 Attendees: Martin Fleischmann, Joris van den Bossche, Brendan Ward, Matt Richards - GeoPandas 1.1 - deprecation of positional args - We will make any new args fed through as positional only if positional only in shapely - In principle agree we should deprecate posiitonal args, not blocking 1.1 - area-weighted mean aggfunc: - https://github.com/geopandas/geopandas/pull/3229 - Geodesic computations - https://github.com/geopandas/geopandas/issues/3539 - Discussed we should deal with this independently of spherely discussion - Difficult around providing a behaviour break. Discussed global option to control warning behaviour - Okay to provide a slow python only implementation in the first instance, ideally have a fast cython version in pyproj (https://github.com/pyproj4/pyproj/issues/1487) - Concluded we should merge with a "future" global option in the same way as pandas, so we can release a 1.2 which doesn't introduce the breaking change. - NumFOCUS check-in with Kari Hall - NomFOCUS CoC - NumFOCUS SDG - plotting refactoring (MF)? - GeoPandas paper - [Special issue](https://www.sciencedirect.com/special-issue/322127/open-urban-data-science) MF is co-editing - outdated WIP [draft](https://martinfleischmann.net/geopandas_paper/) - GeoPlanar moved under geopandas org - https://github.com/geopandas/geoplanar - SSI Software Maintenance Fund ## 2025-03-27 - Shapely 2.1 release - proposal to release on Sunday or Monday - 1.0.2; 1.1.0 releases - focus on 1.1.0 with Shapely 2.1 parity - API for coverage simplification - https://github.com/geopandas/geopandas/issues/1387#issuecomment-2749322989 - new method is better - geodesic area - yes, but through pyproj and behind a global option - Funding oppportunities: - https://www.software.ac.uk/programmes/research-software-maintenance-fund - Small Development Grants changed ## 2025-02-27 Attendees: Martin Fleischmann Joris van den Bossche, Brendan Ward, Matt Richards, Pieter Roggemans - discussed issues around subclassing GeoDataFrame - https://github.com/geopandas/geopandas/issues/3517 - Discussion that PRs like https://github.com/geopandas/geopandas/pull/3505 are fine, but we don't want to encourage subclassing as a pattern - spherely - PR for proof of concept: https://github.com/geopandas/geopandas/pull/3520 - basics work - doesn't yet work: plotting, anything that uses spatial index - How to opt in? - Subclass - Martin: would prefer to stick to term geometry (planar or spherical) instead of geography; Matt agrees - in spherely it is explicitly called "geography" - should we change that? TODO Joris to open an issue - still want to have dtype == 'geometry' return true for any type of geometry (spherical or planar) - to_crs to have a keyword - What is spherical vs planar; "type", "dtype"? - Summary: - Single geometry dtype - How to paramtrize it? `GeometryDtype(type="planar|"spherical")` (or `model=`), `GeometryDtype(spherical=True|False)` - Need a keyword in constructors / to_crs ## 2025-01-30 Attendees: Luca Marconato, Martin Fleischmann Joris van den Bossche, Pieter Roggemans - Geometry engine selection API - https://github.com/geopandas/geopandas/issues/2769 - GeoPandas 1.1 - Do after shapely 1.1 to include - Spherely - Pyogrio - https://github.com/geopandas/pyogrio/pull/486 - Shapely 2.1 - Dask Geopandas - Spatial partitioning operations in dask-geopandas may be affected by the new dask-expression backend of dask-dataframe (as it removed .attrs). The problem was discussed in the more general context of dask.dataframe. Luca: report bugs or possible follow-ups in dask-geopandas and dask-dataframe. ## 2024-11-28 Attendees: Joris van den Bossche, Brendan Ward - SDG on SDSL approved ($5,000) - Martin will take care of the management of this - Spherely: - trying to get to a 0.1.0 release in coming weeks - Joris is adding basic plotting - basic predicates are there (intersects, contains), basic overlays, not many options exposed yet - a few constructive: boundary, centroid; buffer is still missing - Pyogrio: - need to fix CI - can merge the big endian fix once we know CI is green - can look into adding big endian tests later - GeoPython: - Joris submitted spherely talk - GeoPandas: - would like to do release in coming weeks - fix for pandas string dtype: https://github.com/geopandas/geopandas/pull/3457 - may want to deal with some of the Arrow / parquet related issues - how to integrate Spherely into GeoPandas - could have global option to enable Spherely for geographic coordinates - would need different geometry array types - may want to consider letting users choose to do measures on the sphereoid (via spherely/S2) vs ellipsoid (via pyproj) - Brendan has an implementation in cython against pyproj internals we might be able to adapt ## 2024-10-24 Attendees: Martin Fleischmann, Joris van den Bossche, Brendan Ward, Matt Richards, Pieter Roggemans - spherely update - Joris and Benoît have been working toward wrapping up 0.1 release - have packages & wheels for Linux / Mac - some API discussion re: parity with shapely classes / functions: https://github.com/benbovy/spherely/issues/58 - work in progress to create from WKT / WKB - have most of the predicates and basic properties (centroid) in place - We have to think about design with different engines (spherely, geoarrow, point, etc) - NumFOCUS SDG round 3 - Submitted last-minute proposal for funding - NumFOCUS funding support - May want to be more forward with advertising that GeoPandas can accept donations - can have "Sponsor this project" in Github sidebar like pandas: https://github.com/pandas-dev/pandas/ - 1.0.2/1.1 update? - pyogrio - arrow - datetimes - https://github.com/geopandas/pyogrio/issues/487 ## 2024-09-26 cancelled ## 2024-08-29 Attendees: Martin Fleischmann, Joris van den Bossche, Brendan Ward, Matt Richards, Pieter Roggemans - geopandas.lines_from_xy #3381 - in scope? - no, point to shapely functions from our docs - matrix output of the spatial predicates - allow returning the output of sindex.query as scipy.sparse.array and eventually expose this from predicate methods themselves - ref #1674 - pandas.Series.geo accessor #3272 - fine to add, but we do not register the accessor by default to avoid confusion with users seeing the `.geo` api and thinking that is the main API, user needs to do registration manually - SDG - spherely update (deadline in November) - packaging updates in progress, some wheels in place and conda-forge soon - core functionality is next task - need to add more functionality for I/O (e.g., WKT) - plotting: need to tessalate and project coordinates - Joris lightning talk about it at EuroSciPy - 2024 round 3 - dask-geopandas - invite Tom as a dask-geopandas maintainer? -> Joris will do - infra - We now have a NumFOCUS-backed Zoom account. - pyogrio - add back in build with manylinux_2_28, stop using zlib port for manylinux_2_28 - ok to leave out libkml - log an issue on vcpkg for libspatialite if easy to reproduce build failure - contextily - default tiles - shapely release cycle ## 2024-07-25 Attendees: Martin Fleischmann, Joris van den Bossche, Brendan Ward, Pieter Roggemans - geopandas - waiting on NumFOCUS re: geopandas email - want to setup zoom account (per above), for now can use pandas zoom - SDG - spherely: Joris and Benoit will meet in Aug to work on this - 2024 Round 3: plotting (if someone wanted to work on it); submission deadline Aug 30 - pyogrio - switch conda to gdal-core and add instructions on other packages for additional drivers? - Directly depending on libgdal-core (to do this may want to depend on gdal to get around libgdal-core only being >=3.9.1) - direct people to use conda for some packages not in wheels (e.g., spatialite, postgres)? Yes, but add more documentation. - allow /vsimem/ use directly (e.g., for interface with gdal package) ## 2024-06-20 Attendees: Martin Fleischmann, Joris van den Bossche, Brendan Ward, Nicholas YS Tan, Matt Richards - GeoPandas 1.0 - Timeline: - Next week monday? - PRs with 1 approval already: - Geopackage metadata - https://github.com/geopandas/geopandas/pull/2850 - spatial join with attributes - https://github.com/geopandas/geopandas/pull/3231 - let's get this in as-is - CoW changes - upstream issue with pandas to do with copying crs from GeometryArray back to parent DataFrame. Joris changing on pandas side - Post 1.0 roadmap - https://github.com/geopandas/geopandas/pull/3294 - New items to add? - GeoArrow support - One idea is to delay the conversion to shapely geometries until it is needed. Especially for points we could implement some methods for points natively, and there can be benefit in avoiding creating manny shapely objects - Zoom account - NumFOCUS requires generic geopandas email - Swag store (under NumFOCUS) - No response yet, even though it was in the same email as Zoom. Martin will ask again. - NumFOCUS newsletter project updates - Shall we include a note on 1.0? - Spherely SDG - may get started in Aug - project should be done by end of Nov 2024 - GeoPandas Gitter: - should remove from the readme; no longer used - may want to use Discord, easier to setup that getting Slack through NumFOCUS ## 2024-05-30 Attendees: Martin Fleischmann, Brendan Ward - GeoPandas 1.0 - https://github.com/geopandas/geopandas/issues/3312 - check if user is trying to set df['geometry'] when the active geometry column is something else, then raise a UserWarning - raise a FutureWarning when user passes GeoSeries with a name != "geometry"? Probably not, folks are doing this intentionally - https://github.com/geopandas/geopandas/pull/3007#issuecomment-2139516852 ## 2024-04-25 Attendees: Martin Fleischmann, Joris van den Bossche, Brendan Ward - GeoPandas 0.14.4 - Joris will finish and release - GeoPandas 1.0 - https://github.com/geopandas/geopandas/issues/3201 - https://github.com/geopandas/geopandas/milestone/4 - Alignment: - https://github.com/geopandas/geopandas/issues/3256 - interpolate, buffer: raise if no equal index - offset_curve: ignores index (directly passed to shapely method) - translate: passing array-like argument is not supported (passed to scalar shapely geometry object) - writing to memory using Fiona appears to be broken - need more tests - pyogrio - write memory - see https://github.com/Toblerity/Fiona/pull/1331 - most pressing issue is writing to bytes - arrow writer - https://github.com/geopandas/pyogrio/pull/346 ## 2024-03-28 - GeoPandas 1.0 - [release strategy](https://github.com/geopandas/geopandas/issues/3201#issuecomment-2016822012) - need for 0.14.x? - fiona 1.10 to be released end of April - pandas compat is needed? - CZI EOSS - we did not get the grant ## 2024-02-28 Attendees: Brendan Ward, Wouter-Michiel Vierdag, Martin Fleischmann, Luca Marconato, Joris van den Bossche, Pieter Roggemans - GeoPandas 1.0 - https://github.com/geopandas/geopandas/issues/3201 - File IO - switch default to pyogrio - Keywords for column selection https://github.com/geopandas/geopandas/pull/3133 -> deprecate - Use Arrow by default if available? -> not yet - sjoin index behavior - https://github.com/geopandas/geopandas/issues/498 and https://github.com/geopandas/geopandas/pull/2144#issuecomment-1038910188 - Notes from some meetings ago: - one option is to have `keep_right_index` as None / bool: - None = existing behavior, always rename to `index_right`; raise deprecation warning if index has a name and so in future would retain that name - True = always keep right index, use name if it has one otherwise use `index_right` - False = always drop right index - What would the future behaviour be? - https://github.com/geopandas/geopandas/issues/1832 - pyogrio 0.8 - Spherely - Conferences - GeoPython - EuroPython - Spatial Data Science across Languages ## 2024-01-25 Attendees: Brendan Ward, Martin Fleischmann, Joris van den Bossche, Pieter Roggemans - GSoC - Registration is open, if we want to be part of it - NumFOCUS told us to do that without them - Shapely parity - `contains_xy` and `intersects_xy` [#3114](https://github.com/geopandas/geopandas/pull/3114) - do we want to include it? the API may be weird. - leave it out for now - ignore `get_dimensions` and `get_num_points` - 0.14.x - need to backport compatibility PRs and fix the regression one of them caused - Spherely SDG - Martin will ping Benoit about the status - pyogrio 0.8 - use_arrow=True: When? How? No conclusion, but these thoughts were mentioned: - Geopandas 1.0 comes close and pyogrio would become the default IO engine. If use_arrow=True is default by then, there isn't a new migration needed for users when that switch is made? But... is it ready? - There have been some bugs that were found/fixed recently, also still in GDAL, are there still bugs? - GDAL uses arrow under the hood in e.g. ogr2ogr since 3.8, so quite some exposure now? - Idea was to use arrow if pyarrow is installed, disadvantage is that this can lead to surprises: depending on the env used, slightly different behaviour - If truly default, pyarrow becomes a +- hard dependency - But, pandas 3 will also have pyarrow as hard dependency and is planned for april??? - Review capacity in shapely ## 2024-01-04 Attendees: Brendan Ward, Matt Richards, Martin Fleischmann ,Joris van den Bossche - Shapely parity - https://github.com/geopandas/geopandas/issues/2010 - Leave out the prepare-related functions - to/from_geojson not needed (we have other geojson related functionality), to/from_ragged_array too low level - - GeoPandas 1.0 roadmap - geopandas.datasets removal - switch default IO to pyogrio - need to handle include / exclude params in same way as Fiona - expose list_layers as pandas DataFrame of layer name and type - for [mask PR](https://github.com/geopandas/geopandas/pull/3062): how to handle errors if user passes GeometryCollection with overlapping polygons; if we can handle the error cleanly then just add docstring to user that they need to pass a singular geometry that is either a GeometryCollection (add notes for effect of geometry collection vs union); don't union automatically. We changed our mind: split this into 2 PRs, merge the PR as it is (automatic union), then later PR to address both Fiona / Pyogrio performance issues - include pyproj as optional dependency? - GeoPython 2024 (May 27-29) - deadline 15/01 - PySAL folks are coming (Serge Rey, Levi) - Geopandas 0.14.2 for overlay regression - https://github.com/geopandas/geopandas/pull/3074 - Let's cut a release (Joris will do that) - Meetings / mailing lists - intent to set up a slack/discord instead of gitter - Standard PR review process - If there is consensus on the implementation, authored by a committer then a single review is fine (if it is a simple PR) - If it is a small bugfix/ maint /ci fixes, a single committer review is fine - New features / api changes require a 2 person review ## 2023-11-30 Attendees: Brendan Ward, Martin Fleischmann, Pieter Roggemans, Joris van den Bossche - CZI proposal - GeoPandas 1.0 - pyogrio: look into writing with Arrow ## 2023-10-26 - Luca Marconato from scverse - Discussed coordinate system and coordinate transformations in SpatialData/NGFF. Example notebook: https://spatialdata.scverse.org/en/latest/tutorials/notebooks/notebooks/examples/transformations.html - Discussed spatial indexing, sorting and rasterization vs multiscale chunked representation. The new releases https://developmentseed.org/blog/2023-10-23-lonboard and https://github.com/holoviz/datashader/releases/tag/v0.16.0 seem enough to solve the spatialdata challenges. - Circles vs points. Circles are not supported upstream but there is some discussion on enabling this. - Dask geopandas: the developers would appreciate contributions; we will start using it the spatialdata package and report/contribute. - pyogrio: - 0.7.0 released (https://github.com/geopandas/pyogrio/releases/tag/v0.7.0). Do we directly do a 0.7.1? (https://github.com/geopandas/pyogrio/pull/318) -> Brendan will do the release - Do some announcement about it (once conda-forge is out) - Release infrastructure: - https://github.com/marketplace/actions/pypi-publish#trusted-publishing - https://github.com/geopandas/pyogrio/issues/317 - Security contact - Similar work: - [Fiona #1308](https://github.com/Toblerity/Fiona/pull/1308) - this might be the blog post referenced: https://sethmlarson.dev/security-for-package-maintainers - [Shapely #1924](https://github.com/shapely/shapely/issues/1924) - [pandas](https://github.com/pandas-dev/pandas/security/policy) - Add a security.md to GeoPandas projects - use internal Github reporting (enabled for pyogrio) - Enable security scorecard Github action? - https://securityscorecards.dev/ - GeoPandas 1.0 - Methods vs attributes for shapely functionality (eg is_ccw?) - CZI Letter of Intent submitted - results next week - NumFOCUS SDG awaiting results ## 2023-09-29 Attendees: Brendan Ward, Martin Fleischmann, Pieter Roggemans, Joris van den Bossche - upcoming pyogrio v0.7.0 release - coming soon - GeoPandas 1.0 changes - drop support of pygeos and shapely<2 - [PR](https://github.com/geopandas/geopandas/pull/3013) - pyogrio default - needs shim for mask keyword - expose features like "list_layers"? - use pyogrio for write driver detection from extension - document additional keywords on the GeoPandas side - `layer`, `columns` - pyproj optional? (at runtime, and geopandas-base on conda-forge) - shall we make these changes now to give downstream enough time to test against main? - consider making an alpha release to make it easier for users to test with `pip install --pre` - unary_union - https://github.com/geopandas/geopandas/pull/3007 - sjoin index behavior - https://github.com/geopandas/geopandas/issues/498 and https://github.com/geopandas/geopandas/pull/2144#issuecomment-1038910188 - one option is to have `keep_right_index` as None / bool: - None = existing behavior, always rename to `index_right`; raise deprecation warning if index has a name and so in future would retain that name - True = always keep right index, use name if it has one otherwise use `index_right` - False = always drop right index - What would the future behaviour be? - xyzservices and contextily changes related to Stamen - NumFOCUS summit & SDSL info - CZI - Letters of Intent by Oct 17 - https://chanzuckerberg.com/rfa/essential-open-source-software-for-science/ - Broad scope / work items? - Maintenance backlog / project sustainability - maybe some things around keeping up with Shapely / GEOS - NumFOCUS SDG on spherely was submitted ## 2023-08-31 Attendees: Matt Richards, Brendan Ward, Martin Fleischmann, Joris van den Bossche - Make pyogrio the default? - biggest outstanding issue is datetime handling; see [PR](https://github.com/geopandas/pyogrio/pull/253) - pyogrio doesn't have a mask keyword: can use shapely to do the masking (on the pyogrio side?) - Warn for the `mask` keyword not going to be supported with pyogrio? - Let's implement under the hood by passing bbox + doing the exact filter - use global variable to set default engine? - for 0.14 if both are installed, use pyogrio as default; also may want to have a global variable you can override; allow setting `engine=None` to go with global default. - Wait for 1.0 to make change to default - emphasize pyogrio more in the documentation / user guide - add list_layers to GeoPandas - return as DataFrame - would be nice to have additional metadata - add read_info to GeoPandas? - GeoSeries.astype(object) [issue](https://github.com/geopandas/geopandas/issues/2948), is this fixable on the pandas side or should we fix it? - Fix on pandas side, should be reverted - Wider CI failures + warnings should not be user facing - Others should be fixed on geopandas side - Happy to xfail these tests until we get around to fixing them - Migration from PyGEOS to Shapely 2.0 [issue](https://github.com/geopandas/geopandas/issues/2691) proposes a 1.0 in early 2024. \ Are there other things we should should aim to resolve before 1.0 / would block 1.0 / things that would be hard to change after 1.0? - Issues tagged with API in the title e.g. (sjoin index right, set geometry inconsistency #1038), others? - Discuss sjoin index next meeting - [API/COMPAT: unary_union behaviour with shapely 2.0 ](https://github.com/geopandas/geopandas/issues/2579) - Plotting refactor - is it okay to break things there (notably legends) after 1.0? - [Use GPKG as the default driver for to_file?](https://github.com/geopandas/geopandas/issues/1607) - Now we infer from the extension, it's probably fine to keep current behaviour - Pandas arrow backed - Pandas 3.0 will make pyarrow a requirement, but only used by default for string types - may want to have a CI build to enable arrow string types and copy-on-write - do we need to explicitly test that our methods which carry non geometry data preserve dtypes correctly? - Read file support to load into arrow backed dtypes? - Funding - SDG round 3 - Benoit is working on a proposal for `spherely` - CZI - https://chanzuckerberg.com/rfa/essential-open-source-software-for-science/ - biomed links via covid modelling and scverse/spatialdata ## 2023-07-27 Attendees: Martin Fleischmann, Brendan Ward - User Survey 2023? - last one was 2020 - prepare new one for September that could affect what is planned for 1.0 and what later? - ideas: - what is adoption of pyogrio? Are there compatibility issues still in terms of making default instead of Fiona - what is adoption of shapely 2.0? - is there still demand for native python GIS file I/O? - are installation issues better? - postgis support: how important? could this be handled in some other adapter package instead of within GeoPandas? (which is buggy) - could we use Ibis? (https://github.com/geopandas/geopandas/issues/1164) - open issue at: https://github.com/geopandas/geopandas-user-surveys - aim for mid-Sept - NumFOCUS Project Summit in Sept in Amsterdam - identify issues to discuss with other projects in the ecosystem - GDAL: write API for Arrow - geodatacubes: geozarr? - NumFOCUS SDG round 3 - submission deadline September 1, 2023 - if we are going to do this, needs to be written before next meeting - maybe another push at S2 (if Benoit has a capacity)? - Martin will check w/ Benoit - typing - should new PRs contain type hints? - start gradually including them where easy - pandas type unions are private; can we use them? - GeoParquet: - allow user to pass in metadata if metadata not in parquet file to get around exception requiring the metadata; don't allow override - allow reasonable guesses and raise warning: if has geometry column with what looks like WKB, try to decode that, set CRS to None ## 2023-07-06 Attendees: Martin Fleischmann, Joris van den Bossche, Matt Richards, Brendan Ward - Shapely parity - shapely.node - https://github.com/geopandas/geopandas/pull/2925 - hold off for now; wait for windowing node method from GEOS - build_area and polygnize - https://github.com/geopandas/geopandas/issues/2949 - minimum_rotated_rectangle - https://github.com/geopandas/geopandas/pull/2541 - minimum_rotated_rectangle or oriented_envelope? - go with minimum_rotated_rectangle as method only; add alias if people ask - Seed vs rng in sample_points - we may want to change the keyword. Do we need deprecation period (I guess so now). - https://github.com/geopandas/geopandas/pull/2913 - queue for next release, check back about consensus of using rng (in scikit-learn) - Twitter ownership transition - create a gmail address that is used for social sites, then store password in 1password - Joris: follow up with NumFOCUS re: 1password account for GeoPandas - also transfer domain name to NumFOCUS and then host this email out of that? - next meeting - leave at current scheduled time ## 2023-06-01 Attendees: Martin Fleischmann, Joris van den Bossche, Pieter Roggermans, Brendan Ward - Scientific Python Developer Summit news - [SPEC0](https://scientific-python.org/specs/spec-0000/) - minimum supported versions -> adopt this officially instead of the NEP - drop Python 3.8 - [SPEC4](https://scientific-python.org/specs/spec-0004/) - nightly wheels - try to get shapely nightly wheels -> Joris - geopandas -> Martin - consider for pyogrio or Fiona? - SPEC on random number generator: https://github.com/scientific-python/specs/pull/180 - Small Development Grants - shapely parity will kick in this month - proposal on S2 for the September cycle?? - deadline Sept 1 - will reach out to Benoit if he has a capacity - GeoPandas: - 0.13.1 bug-fix release - Reading from urls is broken in some cases: https://github.com/geopandas/geopandas/issues/2908, https://github.com/geopandas/geopandas/pull/2912 - consider reverting to download pre-emptively unless identify URL contains an extension of a type that allows reading part of a dataset (e.g., GPKG) - only pass to pyogrio if there is an extension in the URL - also fix in pyogrio to not add /vsicurl/ if no extension (may not be needed for GeoJSON)? May need to look at other options for vsicurl - short term decision: - pre-emptively download in geopandas unless we are certain /vsicurl will be able to read them - ideally later on fiona/pyogrio get updated to better handle URLs, so we can again just pass them through - Shapely: - [__eq__ and NaN values PR](https://github.com/shapely/shapely/pull/1760) - ideally behavior should be one of equals, equals_identical, equals_exact - consider geometry equal if NaNs in same place; use `equals_identical` - maybe split into bugfix and leave bigger change for 2.1? - [equals exact PR](https://github.com/shapely/shapely/pull/1231) - let PR add keyword and not add normalize as a default - Next meeting: - reschedule from June 29 - scverse/spatialdata ## 2023-04-27 Attendees: Martin Fleischmann, Joris van den Bossche, Brendan Ward, Matt Richards - NumFOCUS sponsored status - update documentation and ReadMe - https://github.com/geopandas/geopandas/pull/2881 - governance repo - community repo - announce on Twitter and Mastodon (?) - once the geopandas page is live on NumFOCUS? - onboarding call - linking of Github donate button to Numfocus - get zoom account - get slack account - add Numfocus attribution for subrepos? - leadership - NumFOCUS SDG on Shapely parity: approved! - Martin plans to start on it in June - GeoPandas 0.13 release - Joris will do the release one of the coming days - pyogrio 0.6.0 released! - anecdote: cuspatial ## 2023-03-30 Attendees: Martin Fleischmann, Joris van den Bossche, Brendan Ward - NumFOCUS SDG - Martin submitted proposal for Shapely parity; should know mid-April - NumFOCUS sponsored status - almost there. The agreement is being signed these days. - GeoPandas - Release 0.13: https://github.com/geopandas/geopandas/issues/2692 - Sample/grid PRs - split simple random sampling into separate PR - make_grid in other PR - GeoJSON crs PRs: - add keyword, but leave current behaviour (False / no reprojection) - Move to ruff for linting - Geodatasets - on PyPI and conda-forge - Shapely: - Largest Empty Circle: - https://github.com/libgeos/geos/issues/855 - https://github.com/shapely/shapely/pull/1307#issuecomment-1485218990 - Please take a look! - pyogrio: - create a bugfix release to pull latest release of GDAL - try to fast-track options for reading: https://github.com/geopandas/pyogrio/issues/216 - add a mask for writing to mark NULL values; would allow us to handle Pandas and Arrow nullable values - still missing from pyogrio: - keywords from fiona - agreed not to implement `mask` (filtering by feature) due to consistency of with / without GEOS in GDAL ## 2023-01-26 Attendees: Martin Fleischmann, Joris van den Bossche, Brendan Ward - follow-up on [xyz-data](https://github.com/martinfleis/xyzdata) and removing NaturalEarth data - Some questions: only refer to existing links, or also host data? Initially try to only have links to others - rename to `geodatasets` and move under geopandas community - Data versioning? Keep simple for now - use calendar versioning for releases - NumFOCUS Sponsored status - some paperwork to follow - NumFOCUS SDG strategy 2023 - there may be some capacity this year and we can ask for 2 grants/year - deadlines: - March 3, 2023 - June 2, 2023 - September 1, 2023 - Ideas: - shapely 2.0 parity (first round) - spherely (maybe 2nd / 3rd round) - pending bug fix releases: - pyogrio 0.5.1: try to release 1/26/2023 - shapely 2.0.1 - minimum_rotated_rectangle: - shapely pre 2.0 had a custom version, shapely 2.0 uses incorrect version from GEOS: https://github.com/shapely/shapely/issues/1670 - PR at https://github.com/shapely/shapely/pull/1708 to fix the difference between shapely custom version - geopandas 0.13: aim for end of Feb - add deprecation warning for accessing underlying array below GeometryArray -> generally deprecate .data in favor of to_numpy() or np.asarray + if pygeos is used warn that it will change to shapely objects - add documentation of calling shapely function on GeoSeries / migration guide - update text of the main warning ## 2023-01-05 Attendees: Martin Fleischmann, Joris van den Bossche, Brendan Ward, Benoît Bovy - GeoPandas got accepted as NumFOCUS Fiscally Sponsored project! - setup Open Collective and Github sponshorship - GeoPandas 0.13 release (https://github.com/geopandas/geopandas/issues/2692) - PyGEOS -> Shapely migration (https://github.com/geopandas/geopandas/issues/2691) - Features: sampling, feature parity - interface for different geometry engines - we will need to figure out a way of switching between shapely and s2shapely engines and later maybe even cuSpatial - long-term solutions for the political issues related to `naturalearth_lowres` - (thoughts from Matt (probably can't attend)) - Current usages: - cx indexing documentation - aggregation with dissolve documentation, uses country <-> continent relationship - interactive mapping example, plotted alongside cities data - user_guide/data_structures -> this is completely replaceable with e.g. nybb - io read_file mask kwarg, use `naturalearth_lowres` to filter `naturalearth_cities` - io row filter, column filter, ignore geometry, where kwarg example -> completely replaceable - user guide/mapping matplotlib plotting examples - Options: - Find an equivalent countries dataset from another provider "with no issues" - I don't think this is long term plausible - Expose a political lense as an option to a user - this was not positively recieved when suggested in #2382, needs to be continually updated / monitored - Remove completely and replace with something else - For example, Australia's bureau of statistics produce national/ state borders and greater capital city area layers which would probably provide an analogue to the dynamics of cities <-> countries <-> continents, but there's probably also European/ American data that may be more ubiquitous to the average user (the one advance of Australia is it has no land borders to be disputed, but so does e.g. the UK) - Remove from user facing but keep in tests / aliased in gpd.datasets - Keeping as is - use GitHub discussion for non-actionable issues - figuring out better communication platform than Gitter? - Ecosystem: - pyogrio 0.5.0 release - ## 2022-11-24 Attendees: Martin Fleischmann, Joris van den Bossche, Brendan Ward - NaturalEarth data boundary disputes - should not change from NaturalEarth - ideally create a separate Python package that downloads & caches NaturalEarth; no longer ship these data in public API - examples: - https://github.com/ropensci/rnaturalearth - https://scitools.org.uk/cartopy/docs/latest/reference/generated/cartopy.io.shapereader.NEShpDownloader.html?highlight=naturalearth - Cartopy: https://github.com/SciTools/cartopy/blob/22cdafca511744143c5b673598a1889f169c1e3d/lib/cartopy/io/shapereader.py#L286-L302 - freeze tests to current data but don't expose these within public API - NumFOCUS SDG 2023 - next round is assumed to close early feb 2023 - ideas: go after highest priorities on roadmap, e.g., Shapely 2.0 parity, dask-geopandas - GeoPython 2023 - https://2023.geopython.net - Basel, March 6-8 - submission Dec 16 - possible talks / workshops: vector data cubes, joint w/ R, Shapely 2.0, S2 Geometry - Mastodon account - Martin to create a fosstodon.org account - Last call for changes on Shapely 2.0 - Geopandas issue with geoparquet because of WKB flavor: https://github.com/geopandas/geopandas/issues/2654 - Add parameter to shapely to_wkb for this for GEOS >= 3.10 - Next GeoPandas release: focus items? - Shapely 2.0 compat (to_crs looses z values) -> small bug fix release? - geoparquet 1.0: - geometry_type => geometry_types - need to check compat with GDAL, may need to include both keys - Cancel next meeting? - consider moving to Jan 5, 2023 - New contributor meeting - Consider doing a review sprint to get through review on outstanding PRs - If time, some geopandas issues to discuss? ## 2022-10-27 Attendees: Brendan Ward, Martin Fleischmann, Joris van den Bossche, Matt Richards - NumFOCUS application - submitted - https://docs.google.com/document/d/1axg8QK_onmUemh2ylsNvaGToM9NNvCAlguRkU2S8hcs/edit - decision by November 30 - GeoPandas 0.12 released with shapely 2.0 support - migration is a little challenging if underlying array is shapely or pygeos geometries - could also have .data property raise a warning if will change from array of pygeos geometries to shapely geometries - Do we want to make shapely method calls compatible with geopandas? - `polygon.contains(points)` - shapely.contains(polygon, points) - https://github.com/shapely/shapely/blob/8c66df52c9c2e04594cc7226708fbd8d7ba7722a/shapely/geometry/base.py#L596-L598 -> if bool() is removed, this would work automatically - **TODO**: Joris will make PR to try to get this into Shapely 2.0 - Roadmap prioritisation - focus on shapely parity to support migration from pygeos to shapely? - then for folks migrating from pygeos they can just use the geopandas methods instead - https://github.com/geopandas/geopandas/issues/2010Wednesday November 9th 4PM EST - everything that is on a geometry object (method or function) should be on a GeoSeries as well - get / count coordinates don't follow those so need to do something different - for things that don't exist in Shapely 1.8 raise a `NotImplementedError` - alignment? - https://github.com/geopandas/geopandas/issues/1832 - for now, leave default as is - **TODO**: improve the warning - Shapely 2.0 - Targeting final release toward end of Nov - point operations vs xy: https://github.com/shapely/shapely/pull/1548 - creating Point objects is more expensive than the predicate, so use xy directly - precedent already set with constructing linestrings: accepts both coordinates and point arrays - what to call ragged arrays: https://github.com/shapely/shapely/pull/1559#issuecomment-1281120178 - Pyogrio: - merged wheel-building PRs: now build for GDAL to 3.5, Arm64 - need to release: 0.4.3 or 0.5 or something else - see if we can add append support to justify 0.5 release - How to deal with the scope of each subproject? - we need to be able to define which enhancement is in the scope and which beyond and properly communicate that - see https://github.com/geopandas/geopandas/pull/2590 for example of the latest discussion on that - challenges around large PRs that were not previously discussed - need to more explicitly state in contributing guide to open an issue to discuss prior to opening PR - GeoPandas project website - https://github.com/geopandas/community/issues/17 - https://github.com/geopandas/community/issues/6 - S2 Geometry development - https://github.com/paleolimbot/s2geography/pull/3 - aim to discuss further at next GeoPandas dev meeting - Dollars-4-Doers donation from SwissRe - would be possible now but NumFOCUS was not excited about it so it is postponed while waiting for the Sponsored level - Pangeo Showcase - present on Wednesday November 9th 4PM EST? - GeoParquet 1.0beta1 vs 0.5 to include in metadata - GEOS: - GEOS line substring: https://github.com/libgeos/geos/pull/708 - pygeos=> shapely subdivide function - maybe copy the Trac issue to GEOS GH issue - This is useful on the PostGIS side, still interest in seeing this - coverage simplification: may want to chain operations against a GEOS coverage object vs black box - C API for clustering? https://github.com/libgeos/geos/pull/688 ## 2022-09-29 Attendees: Brendan Ward, Martin Fleischmann, Joris van den Bossche - NumFOCUS application - Governance documents - https://github.com/geopandas/governance/pull/1 - Size of Steering Council - for PySAL it is 3 - for now leave it "up to 5" - Initial approval of governance documents / membership of council? - Joris will follow up directly with Kelsey Jordahl - add page to GeoPandas doc with summary of Governance and crosslink back - Application - https://docs.google.com/document/d/1axg8QK_onmUemh2ylsNvaGToM9NNvCAlguRkU2S8hcs/edit - (contact Brendan for write privileges in short term) - open questions: - Comprehensive or the Grantor-Grantee fiscal sponsorship model (https://numfocus.org/projects-overview) - pandas: Comprehensive model - GDAL: Grantor-Grantee (but already has OSGeo) - probably want Comprehensive model since the project isn't based out of another organization - List of signatories - Physical mail address (asked NumFOCUS) - Thought(Joris): some of the text about project management and communication channels (q28) might also be useful to include on the website / contribute pages? - update the Community page in the docs - update the Readme of the Community repo - GeoPandas Roadmap proposal - https://github.com/geopandas/geopandas/pull/2568 - add something related to plotting based on GSoC writeup - make PyProj optional? - spatialpandas asked for this - Goals for 1.0 re: dependencies: - remove Fiona as required dependency (still required for pip) - without GDAL / PyProj is advanced usage, want installing with `--no-deps` to still work - Where do we want to put a "project-level" roadmap if distinguished from geopandas one? - Main website should do better job of highlighting the sub projects (pyogrio, dask-geopandas, etc) - could use geopandas.org for the broader project, add or subpath for geopandas subproject docs? - need to figure out what ReadTheDocs can handle - nanoarrow: - smaller package than pyarrow to support basic conversion w/ numpy arrays and pandas data frames - under development now - Dollars-4-Doers donation from SwissRe - probably need to wait until NumFOCUS application is approved - Connecting GeoPandas and Pangeo - Joris will follow up on this to present - Connections to NVIDIA RAPIDS cuSpatial - if cuSpatial supports enough parity with what we use from GEOS, can we use that as an optional backend? - S2 Geometry development - ESA/NASA organizing a workshop on open innovation ## 2022-09-01 Attendees: Martin Fleischmann, Brendan Ward, Joris van den Bossche, Matt Richards - Shapely 2.0, pygeos and a strategy to phase-out different geometry engines - https://github.com/geopandas/geopandas/pull/2275#issuecomment-1206347135 - Decision: release as 0.12 with Shapely 2.0 support once 2.0b1 is released; can merge PR right after updating to latest Shapely - warn during import if detect shapely 2.0 (full release, not beta) and pygeos are both installed; provide instructions on how to set env var - Requirements for [NumFOCUS fiscal sponsorship](https://numfocus.org/projects-overview): - application questionnaire: https://docs.google.com/document/d/1axg8QK_onmUemh2ylsNvaGToM9NNvCAlguRkU2S8hcs/edit - (contact Brendan for write privileges in short term) - application deadline 0ct 15, notification Nov 30 - comprehensive model vs grantor-grantee model - Joris can check re: other NumFOCUS projects - May need to follow up with NumFOCUS to clarify - Need 5 signatories - Roadmap - GeoPandas 1.0: - only Shapely 2.0, no PyGEOS / Shapely 1.8x shims - feature parity with shapely, at least for easy ones that are element-wise operations - preparation of geometries; need good automatic behavior - are there any API changes we want to make / remove? - re-enable documentation page in main repo? - Also project-level roadmap: - I/O, scaling, S2 geographic - link to Geopandas roadmap from higher-level roadmap - inspiration: - [numpy](https://github.com/numpy/numpy/blob/main/doc/neps/roadmap.rst) - [pandas](https://pandas.pydata.org/about/roadmap.html) - Governance - "NumFOCUS requires fiscally sponsored projects to have an explicit governance structure listed publicly on the project website or documentation." - initial draft: https://docs.google.com/document/d/1N2BbZe1PujL69req9wAA0_xUb_EPoOSoWxt2CuTpilg/edit?usp=sharing - (contact Brendan for write privileges in short term) - insipiration: - [numpy](https://numpy.org/doc/stable/dev/governance/governance.html) - [pandas](https://github.com/pandas-dev/pandas-governance) - [jupyter](https://github.com/jupyter/governance/blob/master/governance.md) - [matplotlib](https://matplotlib.org/governance/) - [conda-forge](https://conda-forge.org/docs/orga/governance.html) - https://gitlab.com/rconf/userknowledgebase/-/issues/78 - https://scikit-learn.org/stable/governance.html - PySAL: https://github.com/pysal/governance - need to define: - location: add to community repo, in order to apply to all GeoPandas subprojects? Or within main repo docs? - See Jupyter model: dedicated repo for governance, associated documentation page in main repo - Put into dedicated repo - project roles and associated mechanics: steering council, lead developer, etc - Steering council: - example: for PySAL there are 20 devs and 3 serve on the council on annual basis; self-nominations and voting each year - need to decide period of membership on steering council - process for updating governance docs - will need to be updated after acceptance by NumFOCUS: - add [NumFOCUS subcommittee](https://jupyter.org/governance/governance.html#numfocus-subcommittee) - add [Intitutional partners and funding section](https://jupyter.org/governance/governance.html#institutional-partners-and-funding) - Code of conduct - PSF has group that can receive code of conduct reports - May also be able to get NumFOCUS to do this: https://numfocus.org/code-of-conduct - General desire to have reports go to people that are not also on the steering council

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully