﻿{"id":6145,"date":"2018-08-28T09:00:34","date_gmt":"2018-08-28T07:00:34","guid":{"rendered":"http:\/\/www.sigterritoires.fr\/?p=6145"},"modified":"2018-10-17T12:05:34","modified_gmt":"2018-10-17T10:05:34","slug":"1-n-joins-in-qgis-virtual-layers","status":"publish","type":"post","link":"https:\/\/www.sigterritoires.fr\/index.php\/en\/1-n-joins-in-qgis-virtual-layers\/","title":{"rendered":"1-n joins in QGis: virtual layers"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">One of the most common techniques in GIS in order to treat non-spatial data is that of the join. We use a geographical layer having geometries, as support for another layer having no location data. To this end, we will use a common field to both tables, that allows \u201cthe joining\u201d the records from the geographic table to those of the non- geographic table. Therefore we created a new virtual table where the attributes of the non- geographic table can be used to be mapped with the geometry of the first table. For this join to work it is necessary that for every registration of geographical table corresponds a record in the non- geographic table, and only one. Because if more than one is found, the join cannot work. In that case we have a \u201crelationship\u201d between the tables, never a \u201cjuncture\u201d.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><p>For a long time, GIS software has, only, allowed to work with joins. The relationships do not stand most spatial operators applicable to joins.<!--more--><\/p><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">One of the reasons for this limitation was the restricted subset of the SQL language for the geographic layers. Whether in <a href=\"https:\/\/www.sigterritoires.fr\/index.php\/en\/shapefile-vs-geopackage\/\">shapefile<\/a> files , or others , the requests applicable were limited to a pre-formatted clause \u00a0of the following type \u00ab\u00a0SELECT * FROM the WHERE table\u201d \u00a0 and it was impossible to build the end of the query, i.e. the WHERE clause.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To be able to create a virtual table with several records in table B corresponding to a record in table A (cardinality type 1, n) you have to use the SQL table join capability and therefore use two tables in the query . Now, this is possible with QGis (that has, not always, \u00a0been the case), by using the \u00a0 \u201cvirtual layers\u201d. They have appeared as plugin in version 2.10, and integrated into QGis body in version 2.14.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><h2><strong>The<\/strong> <strong>virtual<\/strong> <strong>layers<\/strong> <strong>of QGis<\/strong><\/h2><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><h3><strong>Features<\/strong> <strong>of<\/strong> <strong>virtual<\/strong> <strong>layers<\/strong><\/h3><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>You can create a new layer virtual with the button \u00a0 \u201cNew virtual layer\u201d: <br\/>\u2022 One virtual layer can be created from a layer selection (right click in the window layer)<\/li>\n<li>If you want to filter a layer with a join, Qgis will propose to create a virtual layer<\/li>\n<li>In DBMANAGER, there is a new entry \u201cVirtual Layers\u201d where you can use the SQL Window to create a virtual layer<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The generation of the virtual layers is saved in the file project. The virtual layer behaves as a native table, especially with the fields originating in a join.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><h3><strong>Using<\/strong> <strong>virtual<\/strong> <strong>layers<\/strong><\/h3><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Let\u2019s discuss the following example:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We have an excel file containing the different municipal areas (campsites, large surfaces , natural , parking , &#8230;). This table has an INSEE (French National Institute for Statistical and Economic Studies) column where the code of the commune on which the area is located, can be found.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We have a common shapefile in the form of polygons, where we find an INSEE_COM attribute with the INSEE code of the municipality.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What we want is having a layer where each area is represented by the polygon of the corresponding commune. Instead of having the X polygons of the <strong><em>municipal layer, <\/em><\/strong>we want to have the Y polygons corresponding to the Y rows of the Excel table of the municipal areas.We load the Municipal layer in QGis, as well as the Excel CCAreas table. To load the Excel table you must activate and use the Spreadsheet Layers plugin.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"331\" data-attachment-id=\"6151\" data-permalink=\"https:\/\/www.sigterritoires.fr\/index.php\/en\/1-n-joins-in-qgis-virtual-layers\/1-n1-1\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n1-1.png?fit=840%2C435&amp;ssl=1\" data-orig-size=\"840,435\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"1-n1-1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n1-1.png?fit=640%2C331&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n1-1.png?resize=640%2C331&#038;ssl=1\" alt=\"\" class=\"wp-image-6151\" srcset=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n1-1.png?w=840&amp;ssl=1 840w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n1-1.png?resize=300%2C155&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n1-1.png?resize=768%2C398&amp;ssl=1 768w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">To create the virtual layer, click on the button <strong><em>Add<\/em><\/strong><strong><em>\/<\/em><\/strong><strong><em>Edit<\/em><\/strong><strong><em>Virtual<\/em><\/strong><strong><em> layer\u00a0 <\/em><\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"360\" data-attachment-id=\"6152\" data-permalink=\"https:\/\/www.sigterritoires.fr\/index.php\/en\/1-n-joins-in-qgis-virtual-layers\/1-n2-1\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n2-1.png?fit=840%2C473&amp;ssl=1\" data-orig-size=\"840,473\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"1-n2-1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n2-1.png?fit=640%2C360&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n2-1.png?resize=640%2C360&#038;ssl=1\" alt=\"\" class=\"wp-image-6152\" srcset=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n2-1.png?w=840&amp;ssl=1 840w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n2-1.png?resize=300%2C169&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n2-1.png?resize=768%2C432&amp;ssl=1 768w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">We use the <strong><em>Import<\/em><\/strong> button to add the two layers in the <strong><em>Integrated<\/em><\/strong><strong><em>Layers<\/em><\/strong> list.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"494\" data-attachment-id=\"6153\" data-permalink=\"https:\/\/www.sigterritoires.fr\/index.php\/en\/1-n-joins-in-qgis-virtual-layers\/1-n3-1\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n3-1.png?fit=840%2C648&amp;ssl=1\" data-orig-size=\"840,648\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"1-n3-1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n3-1.png?fit=640%2C494&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n3-1.png?resize=640%2C494&#038;ssl=1\" alt=\"\" class=\"wp-image-6153\" srcset=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n3-1.png?w=840&amp;ssl=1 840w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n3-1.png?resize=300%2C231&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n3-1.png?resize=768%2C592&amp;ssl=1 768w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">In the window Query, enter the following SQL command:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>SELECT * FROM<\/em> <em>Municipalities29<\/em>, <em>CCAreas<\/em> <em>where<\/em> <em>INSEE_COM = INSEE<\/em>You can (and must) test the syntax of your SQL query with the <strong><em>Test<\/em><\/strong> button \u00a0<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"494\" data-attachment-id=\"6154\" data-permalink=\"https:\/\/www.sigterritoires.fr\/index.php\/en\/1-n-joins-in-qgis-virtual-layers\/1-n4-1\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n4-1.png?fit=840%2C648&amp;ssl=1\" data-orig-size=\"840,648\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"1-n4-1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n4-1.png?fit=640%2C494&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n4-1.png?resize=640%2C494&#038;ssl=1\" alt=\"\" class=\"wp-image-6154\" srcset=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n4-1.png?w=840&amp;ssl=1 840w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n4-1.png?resize=300%2C231&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n4-1.png?resize=768%2C592&amp;ssl=1 768w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Click OK and the virtual layer is added to the map.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"343\" data-attachment-id=\"6155\" data-permalink=\"https:\/\/www.sigterritoires.fr\/index.php\/en\/1-n-joins-in-qgis-virtual-layers\/1-n5-1\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n5-1.png?fit=840%2C450&amp;ssl=1\" data-orig-size=\"840,450\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"1-n5-1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n5-1.png?fit=640%2C343&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n5-1.png?resize=640%2C343&#038;ssl=1\" alt=\"\" class=\"wp-image-6155\" srcset=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n5-1.png?w=840&amp;ssl=1 840w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n5-1.png?resize=300%2C161&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n5-1.png?resize=768%2C411&amp;ssl=1 768w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Notice the two missing municipalities because they have no municipal area in the Excel file. If we display the attribute table of the virtual layer:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"325\" data-attachment-id=\"6156\" data-permalink=\"https:\/\/www.sigterritoires.fr\/index.php\/en\/1-n-joins-in-qgis-virtual-layers\/1-n6\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n6.png?fit=840%2C426&amp;ssl=1\" data-orig-size=\"840,426\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"1-n6\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n6.png?fit=640%2C325&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n6.png?resize=640%2C325&#038;ssl=1\" alt=\"\" class=\"wp-image-6156\" srcset=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n6.png?w=840&amp;ssl=1 840w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n6.png?resize=300%2C152&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n6.png?resize=768%2C389&amp;ssl=1 768w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">We can see that several records correspond to a same municipality, and that the registration number (419) is the number of rows in the Excel table and not the number of municipalities of the shapefile (283).We can go further and add a WHERE clause to select, just, a section of the municipal areas, e.g. camping<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"488\" data-attachment-id=\"6157\" data-permalink=\"https:\/\/www.sigterritoires.fr\/index.php\/en\/1-n-joins-in-qgis-virtual-layers\/1-n7-1\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n7-1.png?fit=840%2C641&amp;ssl=1\" data-orig-size=\"840,641\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"1-n7-1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n7-1.png?fit=640%2C488&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n7-1.png?resize=640%2C488&#038;ssl=1\" alt=\"\" class=\"wp-image-6157\" srcset=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n7-1.png?w=840&amp;ssl=1 840w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n7-1.png?resize=300%2C229&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n7-1.png?resize=768%2C586&amp;ssl=1 768w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">We get only 148 registrations, corresponding to the number of campsites present in the Excel table.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" height=\"347\" width=\"640\" decoding=\"async\" data-attachment-id=\"6158\" data-permalink=\"https:\/\/www.sigterritoires.fr\/index.php\/en\/1-n-joins-in-qgis-virtual-layers\/1-n8-1\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n8-1.png?fit=840%2C455&amp;ssl=1\" data-orig-size=\"840,455\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"1-n8-1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/08\/1-n8-1.png?fit=640%2C347&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2017\/01\/y8.png?resize=640%2C347&#038;ssl=1\" alt=\"\" class=\"wp-image-6158\"\/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>One of the most common techniques in GIS in order to treat non-spatial data is that of the join. We use a geographical layer having geometries, as support for another layer having no location data. To&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"give_campaign_id":0,"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"sfsi_plus_gutenberg_text_before_share":"","sfsi_plus_gutenberg_show_text_before_share":"","sfsi_plus_gutenberg_icon_type":"","sfsi_plus_gutenberg_icon_alignemt":"","sfsi_plus_gutenburg_max_per_row":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[1296],"tags":[1433,1435,1386,1437,1439],"class_list":["post-6145","post","type-post","status-publish","format-standard","hentry","category-posts-en","tag-cardinality","tag-join","tag-qgis-en","tag-table-en","tag-virtual-layer-en"],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p6XU0A-1B7","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/posts\/6145","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/comments?post=6145"}],"version-history":[{"count":0,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/posts\/6145\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/media?parent=6145"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/categories?post=6145"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/tags?post=6145"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}