Skip to content

Commit

Permalink
fix #71
Browse files Browse the repository at this point in the history
  • Loading branch information
hcwinsemius committed May 22, 2024
1 parent 970b53d commit bc2a835
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 15 deletions.
28 changes: 18 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,20 @@ Web-based, professional and scalable velocimetry analysis for operational river
# What is LiveOpenRiverCam

LiveOpenRiverCam allows you to run operational measurement stations that estimate river discharge from videos.
It is meant for National or HydroMeteorological Societies (NHMS), hydropower authorities, waterboards, or service
It is meant for e.g. National HydroMeteorological Societies (NHMS), hydropower authorities, waterboards, or service
providers of such entities, who wish to establish their own services for such users.
It is meant to provide fully automated data streams from operational camera/water level feeds that record videos at set
time intervals. The platform can either receive raw videos which are then orchestrated for processing on cloud nodes
or receive already processed videos, which are processed on-site ("edge processing"). The processing is performed by
[NodeOpenRiverCam](https://github.com/localdevice/nodeorc), the node processing tool around OpenRiverCam.
The processing methods read videos, selects frames, enhances features, orthorectifies and estimates surface velocity
and discharge using state-of-the-art velocimetry methods, all fully automated.
LiveORC will provide you with the following functionalities:
* A administration-style front end for managing sites, configuration, videos and time series.
* Visualization of time series and video analyses.
* Fully automated data streaming from operational camera/water level feeds in the field with "edge processing".
* Per-video processing through "cloud processing".
* A very fast and easy start to this all, through convenient virtualization of services and a very easy to use set up
script.

Processing on sites ("edge processing") or on cloud nodes ("cloud processing") is performed by
[NodeOpenRiverCam](https://github.com/localdevice/nodeorc), the node processing tool around OpenRiverCam. The
processing methods read videos, select frames, enhance features, orthorectify and estimates surface velocity
and discharge using state-of-the-art velocimetry methods.

# Acknowledgements

Expand Down Expand Up @@ -385,11 +391,13 @@ to report on LiveORC. NodeORC makes ample use of the REST API for callbacks of r
The REST API also allows you to develop your own applications on top of LiveORC. For instance, if you wish
to build your own web interface around OpenRiverCam for a specific user or with a specific application in
mind this is in principle possible! The API documentation is also disclosed automatically when you start
LiveORC. If you are on `localhost:8000`, you can find it by browsing to `http://localhost:8000/api/docs`.
The api calls are available on `http://localhost:8000/api`.
LiveORC. If you are on `localhost:8000`, you can find it by browsing to `http://localhost:8000/api/docs`. This gives
the documentation per API end point in . If you prefer a swagger layout, you can also browse to
`http://localhost:8000/api/docs_swagger`. The api calls are available on `http://localhost:8000/api`. Replace your
hostname by the one you have configured if necessary.

# Recipes
b

Recipes describe from top to bottom how a video is treated. They describe in order:
* the video - what frames to use, what the actual water level during the recording was and if frames must be stabilized
* frame preprocessing and orthorectification - several preprocessing methods can be applied to enhance
Expand Down
2 changes: 1 addition & 1 deletion api/models/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ class Meta:
def institute(self):
return self.site.institute


class BaseModelNoInstitute(models.Model):

creator = models.ForeignKey(
Expand All @@ -32,7 +33,6 @@ class Meta:
abstract = True



class BaseInstituteModel(models.Model):
"""
BaseModel with an additional stored field (instead of property) for retrieving the institute
Expand Down
1 change: 0 additions & 1 deletion api/models/time_series.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@ def save(self, *args, **kwargs):
# video_closest.status = VideoStatus.QUEUE
video_closest.save()


class Meta:
indexes = [models.Index(fields=['site', 'timestamp'])]
verbose_name_plural = "time series"
Expand Down
2 changes: 0 additions & 2 deletions api/views/camera_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -128,8 +128,6 @@ def create_task(self, request, *args, **kwargs):
status=status.HTTP_400_BAD_REQUEST,
content_type="application/json"
)


task_form = get_task_form(instance, query_callbacks)
record = TaskForm(
id=task_form["id"],
Expand Down
2 changes: 1 addition & 1 deletion api/views/device.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ def get_client_ip_address(request):
ip_addr = req_headers.get('REMOTE_ADDR')
return ip_addr


class DeviceViewSet(BaseModelViewSet):
"""
API endpoints that allows devices to be viewed or edited.
Expand All @@ -27,7 +28,6 @@ class DeviceViewSet(BaseModelViewSet):
permission_classes = [permissions.IsAuthenticated]
http_method_names = ["get", "post", "delete", "patch"]
filter_backends = [DjangoFilterBackend]
filterset_fields = ['institute']

def get_queryset(self):
"""
Expand Down

0 comments on commit bc2a835

Please sign in to comment.