Azzera filtri
Azzera filtri

Info

This question is locked. Riaprila per modificarla o per rispondere.

How to read shape file in matlab?

30 visualizzazioni (ultimi 30 giorni)
Devendra
Devendra il 26 Mar 2024
Locked: Rena Berman il 5 Giu 2024
I am using following matlab code to read shape file. I am attaching the shape file also as zip file.
% pickup the shape files
d = uigetdir(pwd, 'Select a folder');
shapefiles = dir(fullfile(d, '*.shp'));
for n = 1:length(shapefiles)
\ shapefile = shapefiles(n);
disp(shapefile.name);
S = shaperead(shapefile.name);
\ polygon = polyshape([S.X], [S.Y]);
% Create a logical mask
logical_mask = inpolygon(lon, lat, polygon.Vertices(:, 1), polygon.Vertices(:, 2));
end
This is giving the following errors;
>> test\r\nAchi Khurd.shp
Error using openShapeFiles>checkSHP (line 82)
Unable to open file 'Achi Khurd.shp'. Check the path and filename or file permissions.
Error in openShapeFiles (line 19)
[basename, ext] = checkSHP(basename,shapeExtensionProvided);
Error in shaperead (line 212)
= openShapeFiles(filename,'shaperead');
Error
in test (line 9)
S = shaperead(shapefile.name);
>>
Please suggest me how to fix it? I would be highly obliged for kind help.
Dave
  8 Commenti
Rena Berman
Rena Berman il 5 Giu 2024

(Answers Dev) Restored edit

Rena Berman
Rena Berman il 5 Giu 2024

(Answers Dev) Restored edit

Risposte (1)

Voss
Voss il 26 Mar 2024
Modificato: Voss il 26 Mar 2024
You are attempting to read a file in the current directory:
S = shaperead(shapefile.name);
That is, you are not taking into account the location of that file.
You should specify an absolute or relative path to the file, e.g.:
file_name = fullfile(shapefile.folder,shapefile.name);
S = shaperead(file_name);
d = uigetdir(pwd, 'Select a folder');
assert(~isnumeric(d),'No folder selected')
shapefiles = dir(fullfile(d, '*.shp'));
for n = 1:length(shapefiles)
shapefile = shapefiles(n);
file_name = fullfile(shapefile.folder,shapefile.name);
disp(file_name);
S = shaperead(file_name);
polygon = polyshape([S.X], [S.Y]);
% Create a logical mask
logical_mask = inpolygon(lon, lat, polygon.Vertices(:, 1), polygon.Vertices(:, 2));
% ...
end

This question is locked.

Categorie

Scopri di più su Large Files and Big Data in Help Center e File Exchange

Prodotti


Release

R2024a

Community Treasure Hunt

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

Start Hunting!

Translated by