Joshua Sundance Bailey commited on
Commit
5104e6b
2 Parent(s): 99e2054 6286500

Merge pull request #17 from connorsutton/main

Browse files
geospatial-data-converter/app.py CHANGED
@@ -4,7 +4,7 @@ import os
4
  import geopandas as gpd
5
  import streamlit as st
6
  from aiohttp import ClientSession
7
- from restgdf import Rest
8
 
9
  from utils import read_file, convert, output_format_dict
10
 
@@ -49,7 +49,7 @@ st.file_uploader(
49
  async def get_arcgis_data(url: str) -> tuple[str, gpd.GeoDataFrame]:
50
  """Get data from an ArcGIS featurelayer"""
51
  async with ClientSession() as session:
52
- rest = await Rest.from_url(url, session=session)
53
  name = rest.name
54
  gdf = await rest.getgdf()
55
  return name, gdf
@@ -63,11 +63,13 @@ if st.session_state.arcgis_url:
63
  st.session_state.gdf = gdf
64
 
65
  elif st.session_state.uploaded_file is not None:
 
66
  st.session_state.fn_without_extension, _ = os.path.splitext(
67
  os.path.basename(st.session_state.uploaded_file.name),
68
  )
69
-
70
  st.session_state.gdf = read_file(st.session_state.uploaded_file)
 
 
71
 
72
  if st.session_state.gdf is not None:
73
  st.selectbox(
@@ -103,6 +105,8 @@ if st.session_state.gdf is not None:
103
  "*(geometry omitted for display purposes)*",
104
  )
105
 
106
- display_df = st.session_state.gdf.drop(columns=["geometry"])
 
 
107
 
108
  st.dataframe(display_df)
 
4
  import geopandas as gpd
5
  import streamlit as st
6
  from aiohttp import ClientSession
7
+ from restgdf import FeatureLayer
8
 
9
  from utils import read_file, convert, output_format_dict
10
 
 
49
  async def get_arcgis_data(url: str) -> tuple[str, gpd.GeoDataFrame]:
50
  """Get data from an ArcGIS featurelayer"""
51
  async with ClientSession() as session:
52
+ rest = await FeatureLayer.from_url(url, session=session)
53
  name = rest.name
54
  gdf = await rest.getgdf()
55
  return name, gdf
 
63
  st.session_state.gdf = gdf
64
 
65
  elif st.session_state.uploaded_file is not None:
66
+ # try:
67
  st.session_state.fn_without_extension, _ = os.path.splitext(
68
  os.path.basename(st.session_state.uploaded_file.name),
69
  )
 
70
  st.session_state.gdf = read_file(st.session_state.uploaded_file)
71
+ # except AttributeError:
72
+ # pass # there is a lingering file from the previous instance, but it can be ignored
73
 
74
  if st.session_state.gdf is not None:
75
  st.selectbox(
 
105
  "*(geometry omitted for display purposes)*",
106
  )
107
 
108
+ display_df = st.session_state.gdf.drop(columns=["geometry"]).to_dict(
109
+ orient="records",
110
+ )
111
 
112
  st.dataframe(display_df)
geospatial-data-converter/kml_tricks.py CHANGED
@@ -89,7 +89,9 @@ def extract_data_from_kml_code(kml_code: str) -> pd.DataFrame:
89
  # Create a generator that yields a dictionary for each row, containing the Placemark name and each SimpleData field
90
  row_dicts = (
91
  {
92
- "Placemark_name": tag.parent.parent.find("name").text,
 
 
93
  **{field.get("name"): field.text for field in tag.find_all("simpledata")},
94
  }
95
  for tag in schema_data_tags
 
89
  # Create a generator that yields a dictionary for each row, containing the Placemark name and each SimpleData field
90
  row_dicts = (
91
  {
92
+ "Placemark_name": tag.parent.parent.find("name").text
93
+ if tag.parent.parent.find("name")
94
+ else "[no name]",
95
  **{field.get("name"): field.text for field in tag.find_all("simpledata")},
96
  }
97
  for tag in schema_data_tags
requirements.txt CHANGED
@@ -1,7 +1,7 @@
1
- aiohttp==3.8.6
2
  beautifulsoup4==4.12.2
3
- geopandas==0.14.0
4
  lxml==4.9.3
5
  pyogrio==0.7.2
6
- restgdf==0.0.13
7
- streamlit==1.28.1
 
1
+ aiohttp==3.9.0
2
  beautifulsoup4==4.12.2
3
+ geopandas==0.14.1
4
  lxml==4.9.3
5
  pyogrio==0.7.2
6
+ restgdf==0.9.7
7
+ streamlit==1.28.2