| h |
{'redirect_to': <function redirect_to at 0x7f6bb9aacd30>, 'url': <function url at 0x7f6bb9aace50>, 'get_site_protocol_and_host': <function get_site_protocol_and_host at 0x7f6bb9aacdc0>, 'url_for': <function url_for at 0x7f6bb9aae040>, 'url_for_static': <function url_for_static at 0x7f6bb9aae1f0>, 'url_for_static_or_external': <function url_for_static_or_external at 0x7f6bb9aae280>, 'is_url': <function is_url at 0x7f6bb9aae310>, 'url_is_local': <function url_is_local at 0x7f6bb9aae430>, 'full_current_url': <function full_current_url at 0x7f6bb9aae4c0>, 'current_url': <function current_url at 0x7f6bb9aae550>, 'lang': <function lang at 0x7f6bb9aae5e0>, 'ckan_version': <function ckan_version at 0x7f6bb9aae670>, 'lang_native_name': <function lang_native_name at 0x7f6bb9aae700>, 'is_rtl_language': <function is_rtl_language at 0x7f6bb9aae790>, 'get_rtl_theme': <function get_rtl_theme at 0x7f6bb9aae820>, 'get_rtl_css': <function get_rtl_css at 0x7f6bb9aae8b0>, 'flash_notice': <function flash_notice at 0x7f6bb9aae940>, 'flash_error': <function flash_error at 0x7f6bb9aaedc0>, 'flash_success': <function flash_success at 0x7f6bb9aaee50>, 'are_there_flash_messages': <function are_there_flash_messages at 0x7f6bb9aaeee0>, 'link_to': <function link_to at 0x7f6bb9a2f3a0>, 'file': <function file at 0x7f6bb9a2f430>, 'submit': <function submit at 0x7f6bb9a2f4c0>, 'nav_link': <function nav_link at 0x7f6bb9a2f550>, 'nav_named_link': <function nav_named_link at 0x7f6bb9a2f820>, 'subnav_link': <function subnav_link at 0x7f6bb9a2f940>, 'subnav_named_route': <function subnav_named_route at 0x7f6bb9a2fa60>, 'build_nav_main': <function build_pages_nav_main at 0x7f6b9cf7cf70>, 'build_nav_icon': <function build_nav_icon at 0x7f6bb9a2faf0>, 'build_nav': <function build_nav at 0x7f6bb9a2fb80>, 'build_extra_admin_nav': <function build_extra_admin_nav at 0x7f6bb9a2fca0>, 'default_group_type': <function default_group_type at 0x7f6bb9a2fdc0>, 'get_facet_items_dict': <function get_facet_items_dict at 0x7f6bb9a2fe50>, 'has_more_facets': <function has_more_facets at 0x7f6bb9a2fee0>, 'unselected_facet_items': <function unselected_facet_items at 0x7f6bb9a2ff70>, 'get_facet_title': <function get_facet_title at 0x7f6bb9a30160>, 'get_param_int': <function get_param_int at 0x7f6bb9a30040>, 'sorted_extras': <function sorted_extras at 0x7f6bb9a30280>, 'check_access': <function check_access at 0x7f6bb9a30310>, 'get_action': <function get_action at 0x7f6bb9a304c0>, 'linked_user': <function linked_user at 0x7f6bb9a303a0>, 'group_name_to_title': <function group_name_to_title at 0x7f6bb9a30550>, 'truncate': <function truncate at 0x7f6bb9a305e0>, 'markdown_extract': <function markdown_extract at 0x7f6bb9a30670>, 'icon_url': <function icon_url at 0x7f6bb9a30700>, 'icon_html': <function icon_html at 0x7f6bb9a30790>, 'icon': <function icon at 0x7f6bb9a30820>, 'resource_icon': <function resource_icon at 0x7f6bb9a308b0>, 'format_icon': <function format_icon at 0x7f6bb9a30940>, 'dict_list_reduce': <function dict_list_reduce at 0x7f6bb9a309d0>, 'gravatar': <function gravatar at 0x7f6bb9a30a60>, 'sanitize_url': <function sanitize_url at 0x7f6bb9a30af0>, 'user_image': <function user_image at 0x7f6bb9a30b80>, 'pager_url': <function pager_url at 0x7f6bb9a30c10>, 'get_page_number': <function get_page_number at 0x7f6bb9a30ca0>, 'get_display_timezone': <function get_display_timezone at 0x7f6bb9a30d30>, 'render_datetime': <function render_datetime at 0x7f6bb9a30dc0>, 'date_str_to_datetime': <function date_str_to_datetime at 0x7f6bb9a30e50>, 'parse_rfc_2822_date': <function parse_rfc_2822_date at 0x7f6bb9a30ee0>, 'time_ago_from_timestamp': <function time_ago_from_timestamp at 0x7f6bb9a30f70>, 'button_attr': <function button_attr at 0x7f6bb9a31280>, 'dataset_display_name': <function dataset_display_name at 0x7f6bb9a31310>, 'dataset_link': <function dataset_link at 0x7f6bb9a313a0>, 'resource_display_name': <function resource_display_name at 0x7f6bb9a31430>, 'resource_link': <function resource_link at 0x7f6bb9a314c0>, 'tag_link': <function tag_link at 0x7f6bb9a31550>, 'group_link': <function group_link at 0x7f6bb9a315e0>, 'organization_link': <function organization_link at 0x7f6bb9a31670>, 'dump_json': <function dump_json at 0x7f6bb9a31700>, 'auto_log_message': <function auto_log_message at 0x7f6bb9a31790>, 'activity_div': <function activity_div at 0x7f6bb9a31820>, 'snippet': <function snippet at 0x7f6bb9a318b0>, 'convert_to_dict': <function convert_to_dict at 0x7f6bb9a31940>, 'follow_button': <function follow_button at 0x7f6bb9a319d0>, 'follow_count': <function follow_count at 0x7f6bb9a31a60>, 'add_url_param': <function add_url_param at 0x7f6bb9a31b80>, 'remove_url_param': <function remove_url_param at 0x7f6bb9a31c10>, 'include_resource': <function include_resource at 0x7f6bb9a31ca0>, 'urls_for_resource': <function urls_for_resource at 0x7f6bb9a31d30>, 'debug_inspect': <function debug_inspect at 0x7f6bb9a31dc0>, 'popular': <function popular at 0x7f6bb9a31e50>, 'groups_available': <function groups_available at 0x7f6bb9a31ee0>, 'organizations_available': <function organizations_available at 0x7f6bb9a31f70>, 'roles_translated': <function roles_translated at 0x7f6bb9a32040>, 'user_in_org_or_group': <function user_in_org_or_group at 0x7f6bb9a320d0>, 'dashboard_activity_stream': <function dashboard_activity_stream at 0x7f6bb9a32160>, 'recently_changed_packages_activity_stream': <function recently_changed_packages_activity_stream at 0x7f6bb9a321f0>, 'escape_js': <function escape_js at 0x7f6bb9a32280>, 'get_pkg_dict_extra': <function get_pkg_dict_extra at 0x7f6bb9a32310>, 'get_request_param': <function get_request_param at 0x7f6bb9a323a0>, 'html_auto_link': <function html_auto_link at 0x7f6bb9a32430>, 'render_markdown': <function render_markdown at 0x7f6bb9a324c0>, 'format_resource_items': <function format_resource_items at 0x7f6bb9a32550>, 'resource_preview': <function resource_preview at 0x7f6bb9a325e0>, 'get_allowed_view_types': <function get_allowed_view_types at 0x7f6bb9a32670>, 'rendered_resource_view': <function rendered_resource_view at 0x7f6bb9a32700>, 'view_resource_url': <bound method ResourceProxy.view_resource_url of <Plugin ResourceProxy 'resource_proxy'>>, 'resource_view_is_filterable': <function resource_view_is_filterable at 0x7f6bb9a32820>, 'resource_view_get_fields': <function resource_view_get_fields at 0x7f6bb9a328b0>, 'resource_view_is_iframed': <function resource_view_is_iframed at 0x7f6bb9a32940>, 'resource_view_icon': <function resource_view_icon at 0x7f6bb9a329d0>, 'resource_view_display_preview': <function resource_view_display_preview at 0x7f6bb9a32a60>, 'resource_view_full_page': <function resource_view_full_page at 0x7f6bb9a32af0>, 'remove_linebreaks': <function remove_linebreaks at 0x7f6bb9a32b80>, 'list_dict_filter': <function list_dict_filter at 0x7f6bb9a32c10>, 'SI_number_span': <function SI_number_span at 0x7f6bb9a32ca0>, 'new_activities': <function new_activities at 0x7f6bb9a32d30>, 'uploads_enabled': <function uploads_enabled at 0x7f6bb9a32dc0>, 'get_featured_organizations': <function get_featured_organizations at 0x7f6bb9a32e50>, 'get_featured_groups': <function get_featured_groups at 0x7f6bb9a32ee0>, 'featured_group_org': <function featured_group_org at 0x7f6bb9a32f70>, 'get_site_statistics': <function get_site_statistics at 0x7f6bb9a33040>, 'resource_formats': <function resource_formats at 0x7f6bb9a330d0>, 'unified_resource_format': <function unified_resource_format at 0x7f6bb9a33160>, 'check_config_permission': <function check_config_permission at 0x7f6bb9a331f0>, 'get_organization': <function get_organization at 0x7f6bb9a33280>, 'license_options': <function license_options at 0x7f6bb9a33310>, 'get_translated': <function get_translated at 0x7f6bb9a333a0>, 'facets': <function facets at 0x7f6bb9a33430>, 'mail_to': <function mail_to at 0x7f6bb9a334c0>, 'radio': <function radio at 0x7f6bb9a33550>, 'clean_html': <function clean_html at 0x7f6bb9a335e0>, 'flash': <ckan.lib.helpers._Flash object at 0x7f6bb9a9b970>, 'localised_number': <function localised_number at 0x7f6bbace3310>, 'localised_SI_number': <function localised_SI_number at 0x7f6bbace3430>, 'localised_nice_date': <function localised_nice_date at 0x7f6bbace31f0>, 'localised_filesize': <function localised_filesize at 0x7f6bbace33a0>, 'get_available_locales': <function get_available_locales at 0x7f6bbbe35ca0>, 'get_locales_dict': <function get_locales_dict at 0x7f6bbbe35c10>, 'literal': <class 'ckan.lib.helpers.literal'>, 'asbool': <function asbool at 0x7f6bbbf3aee0>, 'urlencode': <function urlencode at 0x7f6bbdafbca0>, 'include_asset': <function include_asset at 0x7f6bb9aac820>, 'render_assets': <function render_assets at 0x7f6bb9aac940>, 'sanitize_id': <function sanitize_id at 0x7f6bb9a33700>, 'compare_pkg_dicts': <function compare_pkg_dicts at 0x7f6bb9a33790>, 'activity_list_select': <function activity_list_select at 0x7f6bb9a33820>, 'get_collaborators': <function get_collaborators at 0x7f6bb9a338b0>, 'can_update_owner_org': <function can_update_owner_org at 0x7f6bb9a33940>, 'check_ckan_version': <function check_ckan_version at 0x7f6bb9a339d0>, 'csrf_input': <function csrf_input at 0x7f6bb9a33a60>, 'saeoss_default_spatial_search_extent': functools.partial(<function get_default_spatial_search_extent at 0x7f6b9c8a8dc0>, 0.001), 'default_bounding_box': <function get_default_bounding_box at 0x7f6b9c8a8e50>, 'convert_geojson_to_bounding_box': <function convert_geojson_to_bbox at 0x7f6b9c8a8ee0>, 'extent_to_bbox': <function convert_string_extent_to_bbox at 0x7f6b9c8a8f70>, 'saeoss_themes': <function get_saeoss_themes at 0x7f6b9c8e94c0>, 'iso_topic_categories': <function get_iso_topic_categories at 0x7f6b9c8a8ca0>, 'get_iso_topic_display': <function get_iso_topic_display at 0x7f6b9c8a8d30>, 'saeoss_show_version': <function helper_show_version at 0x7f6b9c871040>, 'user_is_org_member': <function user_is_org_member at 0x7f6b9c8710d0>, 'org_member_list': <function org_member_list at 0x7f6b9c871160>, 'user_is_staff_member': <function user_is_staff_member at 0x7f6b9c8711f0>, 'get_featured_datasets': <function get_featured_datasets at 0x7f6b9c871310>, 'get_recently_modified_datasets': <function get_recently_modified_datasets at 0x7f6b9c871430>, 'get_all_datasets_count': <function get_all_datasets_count at 0x7f6b9c8714c0>, 'saeoss_org_memberships': <function get_org_memberships at 0x7f6b9c871790>, 'mod_scheming_flatten_subfield': <function mod_scheming_flatten_subfield at 0x7f6b9c871820>, 'get_today_date': <function get_today_date at 0x7f6b9c871940>, 'get_maintenance_custom_other_field_data': <function get_maintenance_custom_other_field_data at 0x7f6b9c8718b0>, 'get_release': <function get_current_release at 0x7f6b9c8719d0>, 'get_saved_searches': <function get_saved_searches at 0x7f6b9c871af0>, 'get_recent_news': <function get_recent_news at 0x7f6b9c871d30>, 'get_featured_datasets_count': <function get_featured_datasets_count at 0x7f6b9c8713a0>, 'get_user_name': <function get_user_name at 0x7f6b9c871b80>, 'get_user_name_from_url': <function get_user_name_from_url at 0x7f6b9c871ca0>, 'get_user_id': <function get_user_id at 0x7f6b9c871c10>, 'get_seo_metatags': <function get_seo_metatags at 0x7f6b9c871dc0>, 'get_datasets_thumbnail': <function get_datasets_thumbnail at 0x7f6b9c871670>, 'get_year': <function get_year at 0x7f6b9c871e50>, 'get_user_dashboard_packages': <function get_user_dashboard_packages at 0x7f6b9c871ee0>, 'get_org_public_records_count': <function get_org_public_records_count at 0x7f6b9c8715e0>, 'group_package_count': <function group_package_count at 0x7f6b9c871550>, 'render_content': <function render_content at 0x7f6b9cf995e0>, 'get_wysiwyg_editor': <function get_wysiwyg_editor at 0x7f6b9cfa5b80>, 'get_recent_blog_posts': <function get_recent_blog_posts at 0x7f6b9cfa5c10>, 'pages_get_plus_icon': <function get_plus_icon at 0x7f6b9cfa5ca0>, 'scheming_language_text': <function scheming_language_text at 0x7f6b9d05fd30>, 'scheming_field_choices': <function scheming_field_choices at 0x7f6b9d05fdc0>, 'scheming_choices_label': <function scheming_choices_label at 0x7f6b9d05fe50>, 'scheming_datastore_choices': <function scheming_datastore_choices at 0x7f6b9d05fee0>, 'scheming_field_required': <function scheming_field_required at 0x7f6b9d05fb80>, 'scheming_dataset_schemas': <function scheming_dataset_schemas at 0x7f6b9d05ff70>, 'scheming_get_presets': <function scheming_get_presets at 0x7f6b9d05fc10>, 'scheming_get_preset': <function scheming_get_preset at 0x7f6b9cfd2040>, 'scheming_get_dataset_schema': <function scheming_get_dataset_schema at 0x7f6b9cfd20d0>, 'scheming_get_dataset_form_pages': <function scheming_get_dataset_form_pages at 0x7f6b9cfd2160>, 'scheming_group_schemas': <function scheming_group_schemas at 0x7f6b9cfd21f0>, 'scheming_get_group_schema': <function scheming_get_group_schema at 0x7f6b9cfd2280>, 'scheming_organization_schemas': <function scheming_organization_schemas at 0x7f6b9cfd2310>, 'scheming_get_organization_schema': <function scheming_get_organization_schema at 0x7f6b9cfd23a0>, 'scheming_get_schema': <function scheming_get_schema at 0x7f6b9cfd2430>, 'scheming_field_by_name': <function scheming_field_by_name at 0x7f6b9cfd24c0>, 'scheming_datetime_to_utc': <function scheming_datetime_to_utc at 0x7f6b9cfd25e0>, 'scheming_datetime_to_tz': <function scheming_datetime_to_tz at 0x7f6b9cfd2670>, 'scheming_get_timezones': <function scheming_get_timezones at 0x7f6b9cfd2700>, 'scheming_display_json_value': <function scheming_display_json_value at 0x7f6b9cfd2790>, 'scheming_render_from_string': <function scheming_render_from_string at 0x7f6b9cfd2820>, 'scheming_flatten_subfield': <function scheming_flatten_subfield at 0x7f6b9cfd28b0>, 'get_common_map_config_shp': <function get_common_map_config at 0x7f6b9d03b670>, 'get_shapefile_viewer_config': <function get_shapefile_viewer_config at 0x7f6b9d03b700>, 'get_common_map_config_wmts': <function get_common_map_config at 0x7f6b9d03b670>, 'get_common_map_config_geojson': <function get_common_map_config at 0x7f6b9d03b670>, 'geojson_get_max_file_size': <function get_max_file_size at 0x7f6b9d03b790>, 'get_common_map_config_geoviews': <function get_common_map_config at 0x7f6b9d03b670>, 'get_openlayers_viewer_config': <function get_openlayers_viewer_config at 0x7f6b9d03b820>, 'get_reference_date': <function get_reference_date at 0x7f6b9303caf0>, 'get_responsible_party': <function get_responsible_party at 0x7f6b9303cb80>, 'get_common_map_config': <function get_common_map_config at 0x7f6b9303cc10>, 'package_list_for_source': <function package_list_for_source at 0x7f6b9303ce50>, 'package_count_for_source': <function package_count_for_source at 0x7f6b9303cee0>, 'harvesters_info': <function harvesters_info at 0x7f6b9303cf70>, 'harvester_types': <function harvester_types at 0x7f6b93043040>, 'harvest_frequencies': <function harvest_frequencies at 0x7f6b930430d0>, 'link_for_harvest_object': <function link_for_harvest_object at 0x7f6b93043160>, 'harvest_source_extra_fields': <function harvest_source_extra_fields at 0x7f6b930431f0>, 'bootstrap_version': <function bootstrap_version at 0x7f6b93043280>, 'get_harvest_source': <function get_harvest_source at 0x7f6b9303cdc0>, 'get_map_config': <function get_mapview_config at 0x7f6bb3899550>, 'get_dataproxy_url': <function get_dataproxy_url at 0x7f6bb38995e0>} |
| packages |
[{'author': None, 'author_email': None, 'creator_user_id': 'edabd58a-206b-4837-ae44-ff17c126fe88', 'doi': '', 'featured': 'false', 'id': '1f470951-3100-4249-8b3d-5cd07d9dfe88', 'isopen': False, 'license_id': None, 'license_title': None, 'lineage_statement': 'Note that Metropolitan Municipalities are included in the Local Municipalities shapefile to ensure that the layer is continuous throughout the country. If the Metropolitan Municipalities were left out, there will be void spaces in the layer. The topology of the features has been checked to eliminate duplications of vertices and ensure the integrity of the feature geometry. The projection of the feature class is Geographic (Lat/Lon) and if one has to calculate the area of features, it must be transformed to UTM Projection and metres be used as units of measurements.', 'maintainer': None, 'maintainer_email': None, 'metadata_created': '2025-08-28T12:50:36.444111', 'metadata_date': '2018-12-31T00:00', 'metadata_modified': '2025-09-25T11:04:22.840879', 'metadata_thumbnail': '', 'name': 'local_municipal_boundary_2018', 'notes': 'The local (Category B) municipalities are municipalities that are contained within a district (Category C) municipalities. The Metropolitan (Category A) Municipalities are municipalities with the major cities as the core (e.g. City of Johannesburg) and they are outside the District Municipalities. When the boundaries of local municipalities change and affect the boundary of district municipalities, the new district municipal boundary is generated. In the Local Municipalities 2018 shapefile there are 205 Local Municipalities and 8 Metropolitan Municipalities. ', 'num_resources': 1, 'num_tags': 1, 'organization': {'id': 'daf47320-a59c-48de-99e1-ed79d1edb8bb', 'name': 'municipal-demarcation-board', 'title': 'MDB', 'type': 'organization', 'description': 'The Municipal Demarcation Board (MDB) is an independent authority responsible for the determination of municipal boundaries.', 'image_url': '2025-08-13-114446.597008mdb-logo.png', 'created': '2025-08-13T11:44:46.616053', 'is_organization': True, 'approval_status': 'approved', 'state': 'active'}, 'owner_org': 'daf47320-a59c-48de-99e1-ed79d1edb8bb', 'private': False, 'reference_system_additional_info': '', 'spatial': '{"type": "Polygon", "coordinates": [[[15.756999, -35.036414], [33.462579, -35.036414], [33.462579, -21.84192], [15.756999, -21.84192], [15.756999, -35.036414]]]}', 'state': 'active', 'title': 'South African Local Municipal Boundary 2018', 'type': 'dataset', 'url': None, 'version': None, 'contact': [{'electronic_mail_address': 'info@demarcation.org.za', 'individual_name': 'Daniel Sebake', 'position_name': 'Senior Manager: Operations Technology', 'role': 'point_of_contact'}], 'contact_information': [{'facsimile': '', 'voice': ''}], 'dataset_reference_date': [{'reference': '2019-10-03T00:00', 'reference_date_type': 3}], 'distribution_format': [{'name': 'Electronic metadata record', 'version': '1.0'}], 'metadata_language_and_character_set': [{'dataset_character_set': 'utf-8', 'dataset_language': 'English', 'metadata_character_set': 'utf-8', 'metadata_language': 'English'}], 'metadata_standard': [{'name': 'SANS 1878-1:2011', 'version': '1.1'}], 'online_resource': [{'application_profile': '', 'description': '', 'linkage': 'https://dataportal-mdb-sa.opendata.arcgis.com/datasets/27bbdd5b041b4ba6b5707dfed5aa3923_0/about', 'name': 'MDB Local Municipal Boundary 2018'}], 'resources': [{'cache_last_updated': None, 'cache_url': None, 'created': '2025-08-28T12:52:28.631559', 'description': '', 'format': '', 'format_version': '', 'hash': '', 'id': 'fac48025-5e1b-4397-936d-84e309ed3de6', 'last_modified': None, 'metadata_modified': '2025-08-28T12:52:28.622614', 'mimetype': None, 'mimetype_inner': None, 'name': 'MDB Local Municipal Boundary 2018', 'package_id': '1f470951-3100-4249-8b3d-5cd07d9dfe88', 'position': 0, 'resource_type': 'other', 'size': None, 'state': 'active', 'upload_mode': 'single', 'url': 'https://dataportal-mdb-sa.opendata.arcgis.com/search?collection=dataset', 'url_type': None}], 'responsible_party': [{'electronic_mail_address': '', 'individual_name': 'Daniel Sebake', 'position_name': 'Senior Manager: Operations Technology', 'role': 'resource_provider', 'website': ''}], 'responsible_party_contact_address': [{'administrative_area': '', 'city': '', 'delivery_point': '', 'postal_code': ''}], 'responsible_party_contact_info': [{'facsimile': '', 'voice': ''}], 'spatial_parameters': [{'equivalent_scale': 'NA', 'spatial_reference_system': 'EPSG:32735', 'spatial_representation_type': '001'}], 'tags': [{'display_name': 'Boundaries', 'id': '8c110fef-c0c0-4d78-a7d9-5a0cb06120c1', 'name': 'Boundaries', 'state': 'active', 'vocabulary_id': None}], 'topic_and_saeoss_themes': [{'iso_topic_category': 'boundaries'}], 'groups': [], 'relationships_as_subject': [], 'relationships_as_object': []}, {'author': None, 'author_email': None, 'creator_user_id': 'edabd58a-206b-4837-ae44-ff17c126fe88', 'doi': '', 'featured': 'false', 'id': 'aeeb7de8-3b8f-4f2d-9e43-3a9735963b93', 'isopen': False, 'license_id': None, 'license_title': None, 'lineage_statement': 'The topology of the features has been checked to eliminate duplications of vertices and ensure the integrity of the feature geometry. The projection of the feature class is Geographic (Lat/Lon) andif one has to calculate the area of features, it must be transformed to UTM Projection and metres be used as units of measurements.', 'maintainer': None, 'maintainer_email': None, 'metadata_created': '2025-09-25T11:43:29.397647', 'metadata_date': '2025-09-25T00:00', 'metadata_modified': '2025-09-25T11:44:22.642418', 'metadata_thumbnail': '', 'name': 'district', 'notes': 'District Municipalities 2018 is a shapefile and attributes information of all the district municipalities in South Africa. In the hierarchy of local government structure, the District Municipalities are contained within Provinces, then District Municipalities contain Local Municipalities. District Municipalities 2018 was published in the Year 2018 after the municipal boundaries had minor technical adjustments.\r\n\r\nThe district (Category C) municipalities are municipalities that are comprised of local (Category B) municipalities. The Metropolitan (Category A) Municipalities are municipalities with the major cities as the core (e.g. City of Johannesburg) and they are outside the District Municipalities. When the boundaries of local municipalities change and affect the boundary of district municipalities, the new district municipal boundary is generated. In the District Municipalities 2018 shapefile there are 44 District Municipalities and 8 Metropolitan Municipalities. Note that Metropolitan Municipalities are included in the District Municipalities shapefile to ensure that the layer is continuous throughout the country. If the Metropolitan Municipalities were left out, there will be void spaces in the layer.', 'num_resources': 1, 'num_tags': 1, 'organization': {'id': 'daf47320-a59c-48de-99e1-ed79d1edb8bb', 'name': 'municipal-demarcation-board', 'title': 'MDB', 'type': 'organization', 'description': 'The Municipal Demarcation Board (MDB) is an independent authority responsible for the determination of municipal boundaries.', 'image_url': '2025-08-13-114446.597008mdb-logo.png', 'created': '2025-08-13T11:44:46.616053', 'is_organization': True, 'approval_status': 'approved', 'state': 'active'}, 'owner_org': 'daf47320-a59c-48de-99e1-ed79d1edb8bb', 'private': False, 'reference_system_additional_info': '', 'spatial': '{"type": "Polygon", "coordinates": [[[16.4699, -34.8212], [32.8931, -34.8212], [32.8931, -22.1265], [16.4699, -22.1265], [16.4699, -34.8212]]]}', 'state': 'active', 'title': 'South African District Municipal Boundary 2018', 'type': 'dataset', 'url': None, 'version': None, 'contact': [{'electronic_mail_address': 'info@demarcation.org.za', 'individual_name': 'Municipal Demarcation Board', 'position_name': 'Independent Authority', 'role': 'point_of_contact'}], 'contact_information': [{'facsimile': '', 'voice': ''}], 'dataset_reference_date': [{'reference': '2019-10-02T00:00', 'reference_date_type': 2}], 'distribution_format': [{'name': 'Electronic metadata record', 'version': '1.0'}], 'metadata_language_and_character_set': [{'dataset_character_set': 'utf-8', 'dataset_language': 'English', 'metadata_character_set': 'utf-8', 'metadata_language': 'English'}], 'metadata_standard': [{'name': 'SANS 1878-1:2011', 'version': '1.1'}], 'online_resource': [{'application_profile': '', 'description': 1, 'linkage': 'https://dataportal-mdb-sa.opendata.arcgis.com/datasets/23e1b3458c704f65bc764168ae8557b8_0/about', 'name': 'MDB District Municipal Boundary 2018'}], 'resources': [{'cache_last_updated': None, 'cache_url': None, 'created': '2025-09-25T11:43:57.269395', 'description': '', 'format': '', 'format_version': '', 'hash': '', 'id': '4c7ad098-6733-41ee-a0af-682ae2cd856d', 'last_modified': None, 'metadata_modified': '2025-09-25T11:43:57.258862', 'mimetype': None, 'mimetype_inner': None, 'name': 'MDB District Municipal Boundary 2018', 'package_id': 'aeeb7de8-3b8f-4f2d-9e43-3a9735963b93', 'position': 0, 'resource_type': 'other', 'size': None, 'state': 'active', 'upload_mode': 'single', 'url': 'https://dataportal-mdb-sa.opendata.arcgis.com/datasets/23e1b3458c704f65bc764168ae8557b8_0/about', 'url_type': None}], 'responsible_party': [{'electronic_mail_address': '', 'individual_name': 'Municipal Demarcation Board', 'position_name': 'Independent Authority', 'role': 'resource_provider', 'website': ''}], 'responsible_party_contact_address': [{'administrative_area': '', 'city': '', 'delivery_point': '', 'postal_code': ''}], 'responsible_party_contact_info': [{'facsimile': '', 'voice': ''}], 'spatial_parameters': [{'equivalent_scale': 'NA', 'spatial_reference_system': 'WGS:84', 'spatial_representation_type': '001'}], 'tags': [{'display_name': 'Boundaries', 'id': '8c110fef-c0c0-4d78-a7d9-5a0cb06120c1', 'name': 'Boundaries', 'state': 'active', 'vocabulary_id': None}], 'topic_and_saeoss_themes': [{'iso_topic_category': 'boundaries'}], 'groups': [], 'relationships_as_subject': [], 'relationships_as_object': []}, {'author': None, 'author_email': None, 'creator_user_id': 'edabd58a-206b-4837-ae44-ff17c126fe88', 'doi': '10.15493/SARVA.31092023', 'featured': 'false', 'id': '63b05561-7191-4736-9e5b-e94f8375bfe6', 'isopen': False, 'license_id': None, 'license_title': None, 'lineage_statement': 'The increase in wards from 4,277 in 2009 to 4,468 in 2020 was driven by population growth and governance reforms aimed at improving representation and service delivery at the local level.', 'maintainer': None, 'maintainer_email': None, 'metadata_created': '2025-08-13T14:28:21.053535', 'metadata_date': '2025-08-13T16:27', 'metadata_modified': '2025-08-13T14:29:11.850938', 'metadata_thumbnail': '', 'name': 'south_african_municipal_ward_boundaries_2020', 'notes': 'In 2020, South Africa was divided into 4,468 municipal wards, forming the smallest administrative units within the local government system. These wards were distributed across 205 local municipalities and 8 metropolitan municipalities, with each ward represented by an elected ward councilor. Ward boundaries were determined by the Municipal Demarcation Board based on factors such as population size, geographic considerations, and administrative efficiency.', 'num_resources': 1, 'num_tags': 1, 'organization': {'id': 'daf47320-a59c-48de-99e1-ed79d1edb8bb', 'name': 'municipal-demarcation-board', 'title': 'Municipal Demarcation Board', 'type': 'organization', 'description': 'The Municipal Demarcation Board is an independent authority responsible for the determination of municipal boundaries.', 'image_url': '2025-08-13-114446.597008mdb-logo.png', 'created': '2025-08-13T11:44:46.616053', 'is_organization': True, 'approval_status': 'approved', 'state': 'active'}, 'owner_org': 'daf47320-a59c-48de-99e1-ed79d1edb8bb', 'private': False, 'reference_system_additional_info': '', 'spatial': '{"type": "Polygon", "coordinates": [[[16.4699, -34.8212], [32.8931, -34.8212], [32.8931, -22.1265], [16.4699, -22.1265], [16.4699, -34.8212]]]}', 'state': 'active', 'title': 'South African Municipal Ward Boundaries, 2020', 'type': 'dataset', 'url': None, 'version': None, 'contact': [{'electronic_mail_address': 'info@demarcation.org.za', 'individual_name': 'Municipal Demarcation Board', 'position_name': 'Independent Authority', 'role': 'point_of_contact'}], 'contact_information': [{'facsimile': '', 'voice': ''}], 'dataset_reference_date': [{'reference': '2020-11-12T00:00', 'reference_date_type': 2}], 'distribution_format': [{'name': 'Electronic metadata record', 'version': '1.0'}], 'metadata_language_and_character_set': [{'dataset_character_set': 'utf-8', 'dataset_language': 'English', 'metadata_character_set': 'utf-8', 'metadata_language': 'English'}], 'metadata_standard': [{'name': 'SANS 1878-1:2011', 'version': '1.1'}], 'online_resource': [{'application_profile': '', 'description': 1, 'linkage': 'https://spatialhub-mdb-sa.opendata.arcgis.com/datasets/279fbf82a48f46678ddd498627af3f0a_0/about', 'name': 'MDB Wards 2020'}], 'resources': [{'cache_last_updated': None, 'cache_url': None, 'created': '2025-08-13T14:28:43.087975', 'description': '', 'format': '', 'format_version': '', 'hash': '', 'id': 'ef152e47-80d9-4126-bbcb-359000d590c6', 'last_modified': None, 'metadata_modified': '2025-08-13T14:28:43.051644', 'mimetype': None, 'mimetype_inner': None, 'name': 'MDB Wards 2020', 'package_id': '63b05561-7191-4736-9e5b-e94f8375bfe6', 'position': 0, 'resource_type': 'other', 'size': None, 'state': 'active', 'upload_mode': 'single', 'url': 'https://spatialhub-mdb-sa.opendata.arcgis.com/datasets/279fbf82a48f46678ddd498627af3f0a_0/about', 'url_type': None}], 'responsible_party': [{'electronic_mail_address': '', 'individual_name': 'Municipal Demarcation Board', 'position_name': 'Independent Authority', 'role': 'resource_provider', 'website': ''}], 'responsible_party_contact_address': [{'administrative_area': '', 'city': '', 'delivery_point': '', 'postal_code': ''}], 'responsible_party_contact_info': [{'facsimile': '', 'voice': ''}], 'spatial_parameters': [{'equivalent_scale': 'NA', 'spatial_reference_system': 'WGS:84', 'spatial_representation_type': '002'}], 'tags': [{'display_name': 'Boundaries', 'id': '8c110fef-c0c0-4d78-a7d9-5a0cb06120c1', 'name': 'Boundaries', 'state': 'active', 'vocabulary_id': None}], 'topic_and_saeoss_themes': [{'iso_topic_category': 'boundaries'}], 'groups': [], 'relationships_as_subject': [], 'relationships_as_object': []}] |