How to find points inside a country border

11 views (last 30 days)
Hi everyone, I have a 2 dimension matrix containing lat, lon of multiple points. I would like to ask whether there is any way in Matlab to define which points are inside the border of a specified country. Any suggestion would be greatly appreciated!

Accepted Answer

Akira Agata
Akira Agata on 15 Jan 2019
How abou the following?
(In this script, I have used shape file provided in http://thematicmapping.org/downloads/world_borders.php)
% Load shape file of country border
S = shaperead('TM_WORLD_BORDERS_SIMPL-0.3.shp');
S = struct2table(S);
% Target lat and lon (e.g Tokyo)
lat = 35.7;
lon = 139.7;
% Find which country contains (lat,lon)
idx = cellfun(@(X,Y) inpolygon(lon,lat,X,Y),S.X, S.Y);
% Show the result
disp(S.NAME(idx))
>> disp(S.NAME(idx))
'Japan'
  3 Comments
FRANCO CERVERA
FRANCO CERVERA on 5 Jul 2022
Hello,
I am trying to select coordinates points from a specified countries and your script would help me very much but i have problems by running it. Could you please help me to understand what to do with this error message from the script above ?
thank you !
Error using tabular/dotParenReference
Unrecognized table variable name 'NAME'.
Error in test_shapefile (line 12)
disp(S.NAME(idx))
Adam
Adam on 27 Feb 2024
Thank you @Akira Agata! Your code above works beautifly. However, when I tried the coordinates for a coastal city, the display returned no results. Upon closer inspection, I found the polygons contained in your shapefile were too coarse. I updated to the World Bank Official Boundaries shapefile (download), updated the table header from "NAME" to "FORMAL_EN" and everything is working well.

Sign in to comment.

More Answers (2)

KSSV
KSSV on 15 Jan 2019
Read about inpolygon

FRANCO CERVERA
FRANCO CERVERA on 5 Jul 2022
Hello,
I am trying to select coordinates points from a specified countries and your script would help me very much but i have problems by running it. Could you please help me to understand what to do with this error message from the script above ?
thank you !
Error using tabular/dotParenReference
Unrecognized table variable name 'NAME'.
Error in test_shapefile (line 12)
disp(S.NAME(idx))
  1 Comment
KSSV
KSSV on 5 Jul 2022
The error says, in the table S, there is no variable/ column with name NAME.

Sign in to comment.

Products


Release

R2018b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!