From 1da94945b8fb6a406b6d3faae9c616c8c22438fb Mon Sep 17 00:00:00 2001 From: Milad Rafiei <166007313+MiladRafiei@users.noreply.github.com> Date: Tue, 18 Mar 2025 22:53:57 +0330 Subject: [PATCH 1/4] Create 2025-03-18-geospatial-techno.md --- _posts/2025-03-18-geospatial-techno.md | 136 +++++++++++++++++++++++++ img/posts/2.26/WFS_DeleteFeature.png | Bin 0 -> 15167 bytes img/posts/2.26/WFS_InsertFeature.png | Bin 0 -> 26579 bytes img/posts/2.26/WFS_UpdateFeature.png | Bin 0 -> 34479 bytes 4 files changed, 136 insertions(+) create mode 100644 _posts/2025-03-18-geospatial-techno.md create mode 100644 img/posts/2.26/WFS_DeleteFeature.png create mode 100644 img/posts/2.26/WFS_InsertFeature.png create mode 100644 img/posts/2.26/WFS_UpdateFeature.png diff --git a/_posts/2025-03-18-geospatial-techno.md b/_posts/2025-03-18-geospatial-techno.md new file mode 100644 index 000000000..c739e614b --- /dev/null +++ b/_posts/2025-03-18-geospatial-techno.md @@ -0,0 +1,136 @@ +--- +author: Milad Rafiei +layout: post +title: Mastering WFS Transactions in GeoServer +date: 2025-03-18 +categories: +- Tutorials +--- + +[GeoSpatial Techno](https://www.youtube.com/@geospatialtechno) is a startup focused on geospatial information that is providing e-learning courses to enhance the knowledge of geospatial information users, students, and other startups. The main approach of this startup is providing quality, valid specialized training in the field of geospatial information. + +( [YouTube](https://www.youtube.com/@geospatialtechno) +| [LinkedIn](https://www.linkedin.com/in/geospatialtechno) +| [Facebook](https://www.facebook.com/geospatialtechno) +| [X](https://twitter.com/geospatialtechn) +) + +---- + +### Mastering WFS Transactions in GeoServer: A Comprehensive Guide +In this session, we'll explore WFS transactions available in GeoServer. If you want to access the complete tutorial, click on the [link](https://www.youtube.com/watch?v=TIlo7UOAXKg&list=PL_ITaxp1Ob4sjk24Stboa5XbO0LGdEKbL). + +[![](https://img.youtube.com/vi/TIlo7UOAXKg/0.jpg)](https://www.youtube.com/watch?v=TIlo7UOAXKg&list=PL_ITaxp1Ob4sjk24Stboa5XbO0LGdEKbL) + +## Introduction +The Web Feature Service (WFS) transactions in GeoServer, enable users the ability to manipulate geographic data for serving and editing geospatial information over the web. This feature allows for direct editing of spatial features within a dataset through a web browser or application, without needing to download and edit the data locally. + +WFS transactions in GeoServer allow users to dynamically edit spatial data by sending XML requests to insert, update, or delete features. This real-time editing is crucial for applications like online maps and collaborative planning systems. It improves efficiency, data accuracy, and supports real-time collaboration. + +**Note.** This video was recorded on GeoServer 2.22.4, which is not the most up-to-date version. Currently, versions 2.25.x and 2.26.x are supported. To ensure you have the latest release, please visit this [link](https://geoserver.org/download/) and avoid using older versions of GeoServer. + +**Note.** In all examples in this blog post, we utilize the `topp:tasmania_roads` layer. + +## WFS Insert Feature +The Insert Feature operation, when used with GeoServer's WFS transaction feature, allows users to append new features to an existing dataset. This ensures the new feature is securely added to the layer, preventing data duplication and errors. + +**Note.** Backup your data and configuration before making any changes to avoid potential data loss or unexpected behavior. + +Here is an example of how to use the WFS insert feature in GeoServer: +- Navigate to the **Demos** page, then click on the **Demo requests** link. +- From the **Request** drop-down list, select **WFS_transactionInsert.xml**. +- Enter the new coordinates and road's type as follows: + + + + + + + + + 145.2,-42.5 145.2,-43.3 145.8,-43.3 + + + + + + street + + + +- Remember that using the WFS transaction in GeoServer requires appropriate permissions and access rights to ensure that only authorized users can modify the data. Enter the username and password to be authorized, and then press the **Submit** button. +- GeoServer processes the transaction request. If successful, it adds the new feature to the road layer; if unsuccessful, a relevant error information is displayed and no changes are made to the data. +- Navigate to the **Layer Preview** section and open up the **OpenLayers** preview for the `tasmania_roads` layer. Your map should now look like this: + +WFS_InsertFeature + +You have successfully used the insert feature with WFS transaction in GeoServer to add a new street to your dataset. + + +## WFS Update Feature +The Update feature of the WFS transaction in GeoServer enables users to modify existing features within a geospatial dataset. By submitting a request that specifies both the feature type and the desired changes to attributes and geometry, users can efficiently update specific attributes while altering the shape, location, and size of various features. + +Here are the steps to perform an update feature with WFS transaction in GeoServer: +- Select **WFS_transactionUpdateGeom.xml** from the **Request** drop-down list, then edit the codes as follows: + + + + the_geom + + + + + 145.55,-42.7 145.04,-43.04 145.8,-43.4 + + + + + + + + + + +- Enter the username and password to be authorized, and then press the **Submit** button. +- After the GeoServer has processed the transaction request, go back to the **Layer Preview** section and open up the **OpenLayers** preview for the `tasmania_roads` layer. Your map should now look like this: + +WFS_UpdateFeature + + +## WFS Delete Feature +This operation allows users to selectively remove specific features from a dataset by providing their unique identifiers. The process of deleting features can be seamlessly executed through the WFS transaction capabilities in GeoServer. + +This functionality gives users more control over their geospatial database, helping them manage and manipulate data efficiently. As an example, let's remove the features whose type attribute is equal to `road`. To do this, follow the steps displayed on the screen: + +- Select **WFS_transactionDelete.xml** from the **Request** drop-down list, then edit the codes as follows: + + + + + topp:TYPE + road + + + + +- Enter the username and password to be authorized, and then press the **Submit** button. +- After the GeoServer has processed the transaction request, preview for the `tasmania_roads` layer. As you can see, the features of type `Road` have been deleted. + +WFS_DeleteFeature + +Remember that you can define filter conditions to remove the specific features using the WFS Delete transaction. This can include feature IDs, attributes, spatial extent or other criteria. + +- Again, select **WFS_transactionDelete.xml** from the **Request** drop-down list, then edit the codes as follows: + + + + + + + +- Enter the username and password to be authorized, and then press the **Submit** button. +- After the GeoServer has processed the transaction request, open the **OpenLayers** preview for the `tasmania_roads` layer from the **Layer Preview** section. As you can see, the `fid 15` has been deleted. + +---- + +In this session, we took a brief journey to explore SLD styles and various filters in GeoServer. If you want to access the complete tutorial, click on the [link](https://www.youtube.com/watch?v=TIlo7UOAXKg&list=PL_ITaxp1Ob4sjk24Stboa5XbO0LGdEKbL). \ No newline at end of file diff --git a/img/posts/2.26/WFS_DeleteFeature.png b/img/posts/2.26/WFS_DeleteFeature.png new file mode 100644 index 0000000000000000000000000000000000000000..7f005d7b012c1bed0bb5706e9ee8f833c060ebd8 GIT binary patch literal 15167 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�C56fcGW0R;3M5 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 literal 0 HcmV?d00001 diff --git a/img/posts/2.26/WFS_UpdateFeature.png b/img/posts/2.26/WFS_UpdateFeature.png new file mode 100644 index 0000000000000000000000000000000000000000..3e1d960592d03f768c5930bcee92bf0b2c3ddd02 GIT binary patch literal 34479 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 ZW)pMW@cg**4b~#8#>?uLGL(${{x2{M^Sb~5 literal 0 HcmV?d00001 From 0e569ff0c88aada060c6731c4fc0169e76e426eb Mon Sep 17 00:00:00 2001 From: MiladRafiei <166007313+MiladRafiei@users.noreply.github.com> Date: Tue, 18 Mar 2025 23:28:30 +0330 Subject: [PATCH 2/4] Update 2025-03-18-geospatial-techno.md --- _posts/2025-03-18-geospatial-techno.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/_posts/2025-03-18-geospatial-techno.md b/_posts/2025-03-18-geospatial-techno.md index c739e614b..217ef01e2 100644 --- a/_posts/2025-03-18-geospatial-techno.md +++ b/_posts/2025-03-18-geospatial-techno.md @@ -62,7 +62,7 @@ Here is an example of how to use the WFS insert feature in GeoServer: - GeoServer processes the transaction request. If successful, it adds the new feature to the road layer; if unsuccessful, a relevant error information is displayed and no changes are made to the data. - Navigate to the **Layer Preview** section and open up the **OpenLayers** preview for the `tasmania_roads` layer. Your map should now look like this: -WFS_InsertFeature +WFS_InsertFeature You have successfully used the insert feature with WFS transaction in GeoServer to add a new street to your dataset. @@ -94,7 +94,7 @@ Here are the steps to perform an update feature with WFS transaction in GeoServe - Enter the username and password to be authorized, and then press the **Submit** button. - After the GeoServer has processed the transaction request, go back to the **Layer Preview** section and open up the **OpenLayers** preview for the `tasmania_roads` layer. Your map should now look like this: -WFS_UpdateFeature +WFS_UpdateFeature ## WFS Delete Feature @@ -116,7 +116,7 @@ This functionality gives users more control over their geospatial database, help - Enter the username and password to be authorized, and then press the **Submit** button. - After the GeoServer has processed the transaction request, preview for the `tasmania_roads` layer. As you can see, the features of type `Road` have been deleted. -WFS_DeleteFeature +WFS_DeleteFeature Remember that you can define filter conditions to remove the specific features using the WFS Delete transaction. This can include feature IDs, attributes, spatial extent or other criteria. @@ -133,4 +133,4 @@ Remember that you can define filter conditions to remove the specific features u ---- -In this session, we took a brief journey to explore SLD styles and various filters in GeoServer. If you want to access the complete tutorial, click on the [link](https://www.youtube.com/watch?v=TIlo7UOAXKg&list=PL_ITaxp1Ob4sjk24Stboa5XbO0LGdEKbL). \ No newline at end of file +In this session, we took a brief journey to explore SLD styles and various filters in GeoServer. If you want to access the complete tutorial, click on the [link](https://www.youtube.com/watch?v=TIlo7UOAXKg&list=PL_ITaxp1Ob4sjk24Stboa5XbO0LGdEKbL). From 4a0f222447fad29f93324152c8af6a3001b35fb2 Mon Sep 17 00:00:00 2001 From: Jody Garnett Date: Mon, 7 Apr 2025 10:03:03 -0700 Subject: [PATCH 3/4] syntax highlighting --- Gemfile | 1 + README.md | 6 ++--- css/app.css | 2 ++ css/default.css | 61 +++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 67 insertions(+), 3 deletions(-) create mode 100644 css/default.css diff --git a/Gemfile b/Gemfile index 412e4eb54..b7138ef50 100644 --- a/Gemfile +++ b/Gemfile @@ -4,6 +4,7 @@ gem 'jekyll-paginate' gem 'jekyll-sitemap' gem 'tzinfo' gem 'tzinfo-data' +gem 'rouge' gem "webrick", "~> 1.7" diff --git a/README.md b/README.md index 19223c8ec..3137b6e3f 100644 --- a/README.md +++ b/README.md @@ -12,9 +12,9 @@ The site is built with [Jekyll](https://github.com/jekyll/jekyll): #. Before you start: - gem install bundler jekyll jekyll-feed jekyll-paginate jekyll-sitemap - - If anything is missed: + gem install bundler + + Install from Gemfile list: bundle install diff --git a/css/app.css b/css/app.css index 06c36ff3d..0b68938aa 100644 --- a/css/app.css +++ b/css/app.css @@ -1,3 +1,5 @@ +@import "default.css"; + h1, h2, h3, h4, h5 { /*text-align: center;*/ } diff --git a/css/default.css b/css/default.css new file mode 100644 index 000000000..4554e47f3 --- /dev/null +++ b/css/default.css @@ -0,0 +1,61 @@ +.highlight .hll { background-color: #ffffcc } +.highlight .c { color: #408080; font-style: italic } /* Comment */ +.highlight .err { border: 1px solid #FF0000 } /* Error */ +.highlight .k { color: #008000; font-weight: bold } /* Keyword */ +.highlight .o { color: #666666 } /* Operator */ +.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #BC7A00 } /* Comment.Preproc */ +.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #A00000 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #FF0000 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #808080 } /* Generic.Output */ +.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #0040D0 } /* Generic.Traceback */ +.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #008000 } /* Keyword.Pseudo */ +.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #B00040 } /* Keyword.Type */ +.highlight .m { color: #666666 } /* Literal.Number */ +.highlight .s { color: #BA2121 } /* Literal.String */ +.highlight .na { color: #7D9029 } /* Name.Attribute */ +.highlight .nb { color: #008000 } /* Name.Builtin */ +.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */ +.highlight .no { color: #880000 } /* Name.Constant */ +.highlight .nd { color: #AA22FF } /* Name.Decorator */ +.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */ +.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #0000FF } /* Name.Function */ +.highlight .nl { color: #A0A000 } /* Name.Label */ +.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ +.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #19177C } /* Name.Variable */ +.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mf { color: #666666 } /* Literal.Number.Float */ +.highlight .mh { color: #666666 } /* Literal.Number.Hex */ +.highlight .mi { color: #666666 } /* Literal.Number.Integer */ +.highlight .mo { color: #666666 } /* Literal.Number.Oct */ +.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */ +.highlight .sc { color: #BA2121 } /* Literal.String.Char */ +.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #BA2121 } /* Literal.String.Double */ +.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */ +.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */ +.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */ +.highlight .sx { color: #008000 } /* Literal.String.Other */ +.highlight .sr { color: #BB6688 } /* Literal.String.Regex */ +.highlight .s1 { color: #BA2121 } /* Literal.String.Single */ +.highlight .ss { color: #19177C } /* Literal.String.Symbol */ +.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #19177C } /* Name.Variable.Class */ +.highlight .vg { color: #19177C } /* Name.Variable.Global */ +.highlight .vi { color: #19177C } /* Name.Variable.Instance */ +.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */ \ No newline at end of file From cede275c14fb5848cc216ddb67dde5e6c64e00dc Mon Sep 17 00:00:00 2001 From: Jody Garnett Date: Mon, 7 Apr 2025 10:03:56 -0700 Subject: [PATCH 4/4] Create 2025-04-07-wfs-transaction.md From https://github.com/geoserver/geoserver.github.io/pull/249 --- ...echno.md => 2025-04-07-wfs-transaction.md} | 112 ++++++++++-------- 1 file changed, 60 insertions(+), 52 deletions(-) rename _posts/{2025-03-18-geospatial-techno.md => 2025-04-07-wfs-transaction.md} (75%) diff --git a/_posts/2025-03-18-geospatial-techno.md b/_posts/2025-04-07-wfs-transaction.md similarity index 75% rename from _posts/2025-03-18-geospatial-techno.md rename to _posts/2025-04-07-wfs-transaction.md index 217ef01e2..6b0b8d644 100644 --- a/_posts/2025-03-18-geospatial-techno.md +++ b/_posts/2025-04-07-wfs-transaction.md @@ -2,7 +2,7 @@ author: Milad Rafiei layout: post title: Mastering WFS Transactions in GeoServer -date: 2025-03-18 +date: 2025-04-07 categories: - Tutorials --- @@ -40,23 +40,25 @@ Here is an example of how to use the WFS insert feature in GeoServer: - Navigate to the **Demos** page, then click on the **Demo requests** link. - From the **Request** drop-down list, select **WFS_transactionInsert.xml**. - Enter the new coordinates and road's type as follows: - - - - - - - - - 145.2,-42.5 145.2,-43.3 145.8,-43.3 - - - - - - street - - + + ```xml + + + + + + + + 145.2,-42.5 145.2,-43.3 145.8,-43.3 + + + + + + street + + + ``` - Remember that using the WFS transaction in GeoServer requires appropriate permissions and access rights to ensure that only authorized users can modify the data. Enter the username and password to be authorized, and then press the **Submit** button. - GeoServer processes the transaction request. If successful, it adds the new feature to the road layer; if unsuccessful, a relevant error information is displayed and no changes are made to the data. @@ -72,24 +74,26 @@ The Update feature of the WFS transaction in GeoServer enables users to modify e Here are the steps to perform an update feature with WFS transaction in GeoServer: - Select **WFS_transactionUpdateGeom.xml** from the **Request** drop-down list, then edit the codes as follows: - - - - the_geom - - - - - 145.55,-42.7 145.04,-43.04 145.8,-43.4 - - - - - - - - - + + ```xml + + + the_geom + + + + + 145.55,-42.7 145.04,-43.04 145.8,-43.4 + + + + + + + + + + ``` - Enter the username and password to be authorized, and then press the **Submit** button. - After the GeoServer has processed the transaction request, go back to the **Layer Preview** section and open up the **OpenLayers** preview for the `tasmania_roads` layer. Your map should now look like this: @@ -103,15 +107,17 @@ This operation allows users to selectively remove specific features from a datas This functionality gives users more control over their geospatial database, helping them manage and manipulate data efficiently. As an example, let's remove the features whose type attribute is equal to `road`. To do this, follow the steps displayed on the screen: - Select **WFS_transactionDelete.xml** from the **Request** drop-down list, then edit the codes as follows: - - - - - topp:TYPE - road - - - + + ```xml + + + + topp:TYPE + road + + + + ``` - Enter the username and password to be authorized, and then press the **Submit** button. - After the GeoServer has processed the transaction request, preview for the `tasmania_roads` layer. As you can see, the features of type `Road` have been deleted. @@ -121,16 +127,18 @@ This functionality gives users more control over their geospatial database, help Remember that you can define filter conditions to remove the specific features using the WFS Delete transaction. This can include feature IDs, attributes, spatial extent or other criteria. - Again, select **WFS_transactionDelete.xml** from the **Request** drop-down list, then edit the codes as follows: - - - - - - + + ```xml + + + + + + ``` - Enter the username and password to be authorized, and then press the **Submit** button. - After the GeoServer has processed the transaction request, open the **OpenLayers** preview for the `tasmania_roads` layer from the **Layer Preview** section. As you can see, the `fid 15` has been deleted. ---- -In this session, we took a brief journey to explore SLD styles and various filters in GeoServer. If you want to access the complete tutorial, click on the [link](https://www.youtube.com/watch?v=TIlo7UOAXKg&list=PL_ITaxp1Ob4sjk24Stboa5XbO0LGdEKbL). +In this session, we took a brief journey to explore WFS Transaction to insert update and remove features in GeoServer. If you want to access the complete tutorial, click on the [link](https://www.youtube.com/watch?v=TIlo7UOAXKg&list=PL_ITaxp1Ob4sjk24Stboa5XbO0LGdEKbL).