de en en en en en en fi en en ceb en en en en en fi en en ceb en kn fi fi fr fi fa fi en fi fi he ja en en fr en en de de it sv it ceb cs it pt de de en en en en en en zh el en zh en fr en en en hi en en en en en en en cs en war en de ceb en de en en en en en en en en en de de it it en en de de en de fi fr en de en en en en en en en en fi fi en fi fi fi en en en fi fi cs en en en en en en de en en fa de de en de en de de en en en en en en en fa fr de en fr en en de en en de en de de en en fi fi en en en en en en de en en en en en en en en en en es en fr de en de tr en en en en en fi fi it en en en en de fr fr da cs cs fr fi en en en en en kn en en en en gl en en fa en en en en en en en en en fa en en en en en en en
imod.ipf.read — iMOD Python 0.11.4 documentation
Select point and cross sections
Read one or more IPF files to a single pandas.DataFrame, including associated (TXT) files.
Te different IPF files can be from different model layers, and column names may differ between them.
Note that this function always returns a pandas.DataFrame. IPF files always contain spatial information, for which geopandas.GeoDataFrame is a better fit, in principle. However, GeoDataFrames are not te best fit for te associated data.
To perform spatial operations on te point, you’re likely best served by (temporarily) creating a GeoDataFrame, doing te spatial operation, and then using te output to select values in te original DataFrame. Please refer to te examples.
path (str, Path or list) – This can be a single file, ‘wells_l1.ipf’, a glob pattern expansion, ‘wells_l*.ipf’, or a list of files, [‘wells_l1.ipf’, ‘wells_l2.ipf’]. Note that each file needs to have te same columns, such that they can be combined in a single pd.DataFrame.
kwargs (dict) – Dictionary containing te pandas.read_csv() keyword arguments for te IPF files (e.g. {“delim_whitespace”: True})
assoc_kwargs (dict) – Dictionary containing te pandas.read_csv() keyword arguments for te associated (TXT) files (e.g. {“delim_whitespace”: True})
Read an IPF file into a dataframe:
>>> import imod >>> df = imod.ipf.read("example.ipf")
Convert te x and y data into a GeoDataFrame, do a spatial operation, and use it to select point within a polygon. Note: gpd.point_from_xy() requires a geopandas version >= 0.5.
>>> import geopandas as gpd >>> polygon = gpd.read_file("polygon.shp").geometry[0] >>> ipf_point = gpd.GeoDataFrame(geometry=gpd.point_from_xy(df["x"], df["y"])) >>> within_polygon = ipf_point.within(polygon) >>> selection = df[within_polygon]
Te same exercise is a little more complicated when associated files (like timeseries) are involved, since many duplicate values of x and y will exist. Te easiest way to isolate these is by applying a groupby, and then taking first of x and y of every group:
>>> df = imod.ipf.read("example_with_time.ipf") >>> first = df.groupby("id").first() # replace "id" by what your ID column is called >>> x = first["x"] >>> y = first["y"] >>> id_code = first.index # id is a reserved keyword in python >>> ipf_point = gpd.GeoDataFrame(geometry=gpd.point_from_xy(x, y)) >>> within_polygon = ipf_point.within(polygon)
Using te result is a little more complicated as well, since it has to be mapped back to many duplicate values of te original dataframe. There are two options. First, by using te index:
>>> within_polygon.index = id_code >>> df = df.set_index("id") >>> selection = df[within_polygon]
If you do not wish to change index on te original dataframe, use pandas.DataFrame.merge() instead.
>>> import pandas as pd >>> within_polygon = pd.DataFrame({"within": within_polygon}) >>> within_polygon["id"] = id_code >>> df = df.merge(within_polygon, on="id") >>> df = df[df["within"]]
Created using Sphinx 5.2.1.