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
|
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
|
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.
|
2 |
beautifulsoup4==4.12.2
|
3 |
-
geopandas==0.14.
|
4 |
lxml==4.9.3
|
5 |
pyogrio==0.7.2
|
6 |
-
restgdf==0.
|
7 |
-
streamlit==1.28.
|
|
|
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
|