[docs] add configuration options
Browse files- docs/conf.py +9 -0
- docs/index.rst +2 -1
- requirements_docs.txt +1 -0
- src/prediction_api/predictors.py +8 -3
- static/app.js +0 -33
- static/index.html +0 -41
- static/style.css +0 -0
docs/conf.py
CHANGED
|
@@ -21,6 +21,7 @@ extensions = [
|
|
| 21 |
'sphinx.ext.autodoc',
|
| 22 |
'sphinx.ext.viewcode',
|
| 23 |
'sphinx.ext.napoleon',
|
|
|
|
| 24 |
# 'sphinx_autodoc_defaultargs'
|
| 25 |
]
|
| 26 |
# Napoleon settings
|
|
@@ -38,6 +39,9 @@ napoleon_google_docstring = True
|
|
| 38 |
# napoleon_type_aliases = None
|
| 39 |
# napoleon_attr_annotations = True
|
| 40 |
|
|
|
|
|
|
|
|
|
|
| 41 |
templates_path = ['_templates']
|
| 42 |
exclude_patterns = [
|
| 43 |
'_build', 'Thumbs.db', '.DS_Store', 'build/*', 'machine_learning_models', 'machine_learning_models/*'
|
|
@@ -70,3 +74,8 @@ html_sidebars = {
|
|
| 70 |
]
|
| 71 |
}
|
| 72 |
html_static_path = ['_static']
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 21 |
'sphinx.ext.autodoc',
|
| 22 |
'sphinx.ext.viewcode',
|
| 23 |
'sphinx.ext.napoleon',
|
| 24 |
+
'sphinx_autodoc_typehints'
|
| 25 |
# 'sphinx_autodoc_defaultargs'
|
| 26 |
]
|
| 27 |
# Napoleon settings
|
|
|
|
| 39 |
# napoleon_type_aliases = None
|
| 40 |
# napoleon_attr_annotations = True
|
| 41 |
|
| 42 |
+
#
|
| 43 |
+
typehints_defaults = "comma"
|
| 44 |
+
|
| 45 |
templates_path = ['_templates']
|
| 46 |
exclude_patterns = [
|
| 47 |
'_build', 'Thumbs.db', '.DS_Store', 'build/*', 'machine_learning_models', 'machine_learning_models/*'
|
|
|
|
| 74 |
]
|
| 75 |
}
|
| 76 |
html_static_path = ['_static']
|
| 77 |
+
html_theme_options = {
|
| 78 |
+
"description": "Segment Anything applied to geodata",
|
| 79 |
+
"fixed_sidebar": "true",
|
| 80 |
+
"sidebar_collapse": "false"
|
| 81 |
+
}
|
docs/index.rst
CHANGED
|
@@ -9,8 +9,9 @@ Welcome to SamGIS's documentation!
|
|
| 9 |
.. toctree::
|
| 10 |
:maxdepth: 2
|
| 11 |
:caption: Contents:
|
|
|
|
| 12 |
|
| 13 |
-
|
| 14 |
|
| 15 |
Indices and tables
|
| 16 |
==================
|
|
|
|
| 9 |
.. toctree::
|
| 10 |
:maxdepth: 2
|
| 11 |
:caption: Contents:
|
| 12 |
+
:hidden:
|
| 13 |
|
| 14 |
+
modules
|
| 15 |
|
| 16 |
Indices and tables
|
| 17 |
==================
|
requirements_docs.txt
CHANGED
|
@@ -1 +1,2 @@
|
|
| 1 |
sphinx
|
|
|
|
|
|
| 1 |
sphinx
|
| 2 |
+
sphinx-autodoc-typehints
|
src/prediction_api/predictors.py
CHANGED
|
@@ -14,9 +14,14 @@ models_dict = {"fastsam": {"instance": None}}
|
|
| 14 |
|
| 15 |
|
| 16 |
def samexporter_predict(
|
| 17 |
-
bbox: llist_float,
|
|
|
|
|
|
|
|
|
|
|
|
|
| 18 |
"""
|
| 19 |
Return predictions as a geojson from a geo-referenced image using the given input prompt.
|
|
|
|
| 20 |
1. if necessary instantiate a segment anything machine learning instance model
|
| 21 |
2. download a geo-referenced raster image delimited by the coordinates bounding box (bbox)
|
| 22 |
3. get a prediction image from the segment anything instance model using the input prompt
|
|
@@ -25,7 +30,7 @@ def samexporter_predict(
|
|
| 25 |
Args:
|
| 26 |
bbox: coordinates bounding box
|
| 27 |
prompt: machine learning input prompt
|
| 28 |
-
zoom:
|
| 29 |
model_name: machine learning model name
|
| 30 |
|
| 31 |
Returns:
|
|
@@ -73,7 +78,7 @@ def get_raster_inference(
|
|
| 73 |
model_name: model name string
|
| 74 |
|
| 75 |
Returns:
|
| 76 |
-
|
| 77 |
"""
|
| 78 |
np_img = np.array(img)
|
| 79 |
app_logger.info(f"img type {type(np_img)}, prompt:{prompt}.")
|
|
|
|
| 14 |
|
| 15 |
|
| 16 |
def samexporter_predict(
|
| 17 |
+
bbox: llist_float,
|
| 18 |
+
prompt: list[dict],
|
| 19 |
+
zoom: float,
|
| 20 |
+
model_name: str = "fastsam"
|
| 21 |
+
) -> Dict[str, int]:
|
| 22 |
"""
|
| 23 |
Return predictions as a geojson from a geo-referenced image using the given input prompt.
|
| 24 |
+
|
| 25 |
1. if necessary instantiate a segment anything machine learning instance model
|
| 26 |
2. download a geo-referenced raster image delimited by the coordinates bounding box (bbox)
|
| 27 |
3. get a prediction image from the segment anything instance model using the input prompt
|
|
|
|
| 30 |
Args:
|
| 31 |
bbox: coordinates bounding box
|
| 32 |
prompt: machine learning input prompt
|
| 33 |
+
zoom:
|
| 34 |
model_name: machine learning model name
|
| 35 |
|
| 36 |
Returns:
|
|
|
|
| 78 |
model_name: model name string
|
| 79 |
|
| 80 |
Returns:
|
| 81 |
+
raster prediction mask, prediction number
|
| 82 |
"""
|
| 83 |
np_img = np.array(img)
|
| 84 |
app_logger.info(f"img type {type(np_img)}, prompt:{prompt}.")
|
static/app.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
| 1 |
-
const jsonBtn = document.getElementById("getJson");
|
| 2 |
-
const apiBtn = document.getElementById("getApi");
|
| 3 |
-
const output = document.getElementById("output");
|
| 4 |
-
const coordsForm = document.getElementById("coords-form");
|
| 5 |
-
|
| 6 |
-
function formData2json(dataId, newObj={}) {
|
| 7 |
-
const formData = new FormData(dataId);
|
| 8 |
-
formData.forEach(function(value, key){
|
| 9 |
-
newObj[key] = value;
|
| 10 |
-
});
|
| 11 |
-
return JSON.stringify(newObj);
|
| 12 |
-
}
|
| 13 |
-
|
| 14 |
-
coordsForm.addEventListener('submit', event => {
|
| 15 |
-
event.preventDefault();
|
| 16 |
-
const inputJson = formData2json(coordsForm)
|
| 17 |
-
console.log("inputJson", inputJson, "#");
|
| 18 |
-
|
| 19 |
-
fetch('/infer_samgeo', {
|
| 20 |
-
method: 'POST', // or 'PUT'
|
| 21 |
-
body: inputJson, // a FormData will automatically set the 'Content-Type',
|
| 22 |
-
headers: {"Content-Type": "application/json"},
|
| 23 |
-
}).then(function (response) {
|
| 24 |
-
return response.json();
|
| 25 |
-
}).then(function (data) {
|
| 26 |
-
console.log("data:", data, "#")
|
| 27 |
-
output.innerHTML = JSON.stringify(data)
|
| 28 |
-
}).catch(function (err) {
|
| 29 |
-
console.log("err:", err, "#")
|
| 30 |
-
output.innerHTML = `err:${JSON.stringify(err)}.`;
|
| 31 |
-
});
|
| 32 |
-
event.preventDefault();
|
| 33 |
-
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static/index.html
DELETED
|
@@ -1,41 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html lang="en">
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset="UTF-8">
|
| 5 |
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
-
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
| 7 |
-
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/skeleton/2.0.4/skeleton.min.css" />
|
| 8 |
-
<title>Fetch API</title>
|
| 9 |
-
</head>
|
| 10 |
-
<body>
|
| 11 |
-
<div class="container">
|
| 12 |
-
<h1>Fetch API</h1>
|
| 13 |
-
<form id="coords-form">
|
| 14 |
-
<label>
|
| 15 |
-
bbox: x1 <input type="number" id="x-center-form" name="x1" value="-122.1497"/>
|
| 16 |
-
</label>
|
| 17 |
-
<label>
|
| 18 |
-
bbox: x2 <input type="number" id="y-center-form" name="x2" value="37.6311"/>
|
| 19 |
-
</label>
|
| 20 |
-
<label>
|
| 21 |
-
bbox: y1 <input type="number" id="y-center-form" name="y1" value="-122.1203"/>
|
| 22 |
-
</label>
|
| 23 |
-
<label>
|
| 24 |
-
bbox: y2 <input type="number" id="y-center-form" name="y2" value="37.6458"/>
|
| 25 |
-
</label>
|
| 26 |
-
<br/><br/>
|
| 27 |
-
<label>
|
| 28 |
-
x point: <input type="number" id="x-form" name="x" value="-122.1419"/>
|
| 29 |
-
</label>
|
| 30 |
-
<label>
|
| 31 |
-
y point: <input type="number" id="y-form" name="y" value="37.6383"/>
|
| 32 |
-
</label>
|
| 33 |
-
<br/><br/>
|
| 34 |
-
<button type="submit" id="submit-btn">submit form</button>
|
| 35 |
-
</form>
|
| 36 |
-
<br><br>
|
| 37 |
-
<div id="output"></div>
|
| 38 |
-
</div>
|
| 39 |
-
<script src="app.js"></script>
|
| 40 |
-
</body>
|
| 41 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static/style.css
DELETED
|
File without changes
|