From: Fraser Dickson on 30 Mar 2010 05:52 Hi I found some code in the file ezxchange for viewing a google map ( static) in matlab bu computing a url and using urlwrite to save the image however i have a problem in that i keep getting the error "error downloading url" however if i take the url that the code makes and put that directly in a browser it the map is displayed fine this was the code i got off the net function [XX YY M Mcolor] = get_google_map(lat, lon, varargin) %% Gets a google map using the Google Static Maps API % % REQUIREMENTS: % 1) deg2utm() (Conversion from degrees to UTM coordinates, found on % MATLAB Central. % % 2) THIS FUNCTION REQUIRES A GOOGLE MAPS API KEY! (READ ON) % To query and return a Google Map using the Google Static Map API, Google % requires that you have a valid MAPS API KEY. The key is free and only % requires a Google account and a valid domain (e.g. http://ccom.unh.edu ) % from which your queries will come. Note, this last requirement places % serious limitations on the portability of this function, as it is % necessarily tied to a domain and therefore (usually) a physical location. % % A Google Maps API Key may be obtained here: % http://code.google.com/apis/maps/signup.html % % Once you obtain your key, replace the text assigned to the MAPS_API_KEY % variable below with your own. % % USAGE: % % [XX YY M Mcolor] = get_google_map( latitude, longitude, ... % Property, Value,... % Property, Value) % % PROPERTIES: % Height (640) Height of the image in pixels (max 640) % Width (640) Width of the image in pixels (max 640) % Zoom (15) Zoom Level (1-19) Zoom of 15 = ~3.4m/pixel. % MapType ('satellite') Type of map to return. Any of [roadmap, mobile, % satellite, terrain, hybrid, mapmaker-roadmap, % mapmaker-hybrid) See the Google Maps API for % more information. % Marker The marker argument is a text string with fields % conforming to the Google Maps API. The following are % valid examples: % '43.0738740,-70.713993' (dflt midsize orange marker) % '43.0738740,-70.713993,blue' (midsize blue marker) % '43.0738740,-70.713993,yellowa' (midsize yellow % marker with label "A") % '43.0738740,-70.713993,tinyredb' (tiny red marker % with label "B") % % RESULTS: % XX Estimate of Easting pixel coordinates in UTM % YY Estimate of Northing pixel coordinates in UTM % M Image data matrix (height x width) % Mcolor Image colormap % % EXAMPLE: % % % Get the map % [XX YY M Mcolor] = get_google_map(43.0738740,-70.713993); % % Plot the result % surf(XX,YY,M,'edgecolor','none'); view(0,90); % colormap(Mcolor) % % % % References: % http://code.google.com/apis/maps/documentation/staticmaps % % KNOWN BUGS AND ISSUES: % 1) MAP Bounds. The bounds reported by this function are an approximation % based on repeated trials, as there is no way (to my knowledge) in which % to query Google for the bounds of the map image exactly. This method is % potentially ripe with errors. For example, it may not produce correct % bounds at latitudes far from 40 degrees N/S where it was calibrated. % 2) No provision has been programmed to handle locations near the date % line, nor boundaries between UTM zones. Images that cross these will % likely produce improper bounds. % % * Val Schmidt % * University of New Hampshire % * Center for Coastal and Ocean Mapping % * 2009 % Google Maps Key for http://ccom.unh.edu MAPS_API_KEY = ['ABQIAAAAgjJdMDG4XFg3DYYdLGwa8RTR4qNa0YPO2GvXB6kZVmHq2RMeSBSITPO142vFjK9HnDCoEOMZK1TA9w']; % HANDLE ARGUMENTS height = 640; width = 640; zoomlevel = 15; maptype = 'satellite'; markeridx = 1; markerlist = {}; if nargin > 2 for idx = 1:2:length(varargin) switch lower(varargin{idx}) case 'height' height = varargin{idx+1}; case 'width' width = varargin{idx+1}; case 'zoom' zoomlevel = varargin{idx+1}; case 'maptype' maptype = varargin{idx+1}; case 'marker' markerlist{markeridx} = varargin{idx+1}; markeridx = markeridx + 1; otherwise error(['Unrecognized variable: ' varargin{idx}]) end end end if zoomlevel <1 || zoomlevel > 19 error('Zoom Level must be > 0 and < 20.') end if mod(zoomlevel,1) ~= 0 zoomlevel = round(zoomlevel) warning(['Zoom Level must be an integer. Rounding to '... num2str(zoomlevel)]); end % ESTIMATE BOUNDS OF IMAGE: % % Normally one must specify a center (lat,lon) and zoom level for a map. % Zoom Notes: % ZL: 15, hxw = 640x640, image dim: 2224.91 x 2224.21 (mean 2224.56) % ZL: 16, hxw = 640x640, image dim: 1128.01m x 1111.25m (mean 1119.63) % This gives an equation of roughly (ZL-15)*3.4759 m/pix * pixels % So for an image at ZL 16, the LHS bound is % LHS = centerlonineastings - (zl-15) * 3.4759 * 640/2; [lonutm latutm zone] = deg2utm(lat,lon); Hdim = (2^15/2^zoomlevel) * 3.4759 * width; Vdim = (2^15/2^zoomlevel) * 3.4759 * height; ell = lonutm - Hdim/2; nll = latutm - Vdim/2; eur = lonutm + Hdim/2; nur = latutm + Vdim/2; YY = linspace(nll,nur,height); XX = linspace(ell,eur,width); % CONSTRUCT QUERY URL preamble = 'http://maps.google.com/staticmap'; location = ['?center=' num2str(lat,10) ',' num2str(lon,10)]; zoom = ['&zoom=' num2str(zoomlevel)]; size = ['&size=' num2str(width) 'x' num2str(height)]; maptype = ['&maptype=' maptype ]; markers = '&markers='; for idx = 1:length(markerlist) if idx < length(markerlist) markers = [markers markerlist{idx} '%7C']; else markers = [markers markerlist{idx}]; end end format = '&format=gif'; key = ['&key=' MAPS_API_KEY]; sensor = '&sensor=false'; url = [preamble location zoom size maptype format markers key sensor]; disp(url) % GET THE IMAGE filename = urlwrite(url,'tmp.gif'); [M Mcolor] = imread(filename); M = cast(M,'double'); % CLEAN UP delete(filename);
From: us on 30 Mar 2010 06:14 "Fraser Dickson" <fraser.dickson(a)gmail.com> wrote in message <hoshk3$et3$1(a)fred.mathworks.com>... > Hi I found some code in the file ezxchange for viewing a google map ( static) in matlab bu computing a url and using urlwrite to save the image however i have a problem in that i keep getting the error > "error downloading url" > > however if i take the url that the code makes and put that directly in a browser it the map is displayed fine > > this was the code i got off the net ask the author of the FEX code... us
From: Oliver Woodford on 30 Mar 2010 06:24 "Fraser Dickson" wrote: > Hi I found some code in the file ezxchange for viewing a google map ( static) in matlab bu computing a url and using urlwrite to save the image however i have a problem in that i keep getting the error > "error downloading url" > > however if i take the url that the code makes and put that directly in a browser it the map is displayed fine > > this was the code i got off the net > > function [XX YY M Mcolor] = get_google_map(lat, lon, varargin) > %% Gets a google map using the Google Static Maps API > % > % REQUIREMENTS: > % 1) deg2utm() (Conversion from degrees to UTM coordinates, found on > % MATLAB Central. > % > % 2) THIS FUNCTION REQUIRES A GOOGLE MAPS API KEY! (READ ON) > % To query and return a Google Map using the Google Static Map API, Google > % requires that you have a valid MAPS API KEY. The key is free and only > % requires a Google account and a valid domain (e.g. http://ccom.unh.edu ) > % from which your queries will come. Note, this last requirement places > % serious limitations on the portability of this function, as it is > % necessarily tied to a domain and therefore (usually) a physical location. > % > % A Google Maps API Key may be obtained here: > % http://code.google.com/apis/maps/signup.html > % > % Once you obtain your key, replace the text assigned to the MAPS_API_KEY > % variable below with your own. > % > % USAGE: > % > % [XX YY M Mcolor] = get_google_map( latitude, longitude, ... > % Property, Value,... > % Property, Value) > % > % PROPERTIES: > % Height (640) Height of the image in pixels (max 640) > % Width (640) Width of the image in pixels (max 640) > % Zoom (15) Zoom Level (1-19) Zoom of 15 = ~3.4m/pixel. > % MapType ('satellite') Type of map to return. Any of [roadmap, mobile, > % satellite, terrain, hybrid, mapmaker-roadmap, > % mapmaker-hybrid) See the Google Maps API for > % more information. > % Marker The marker argument is a text string with fields > % conforming to the Google Maps API. The following are > % valid examples: > % '43.0738740,-70.713993' (dflt midsize orange marker) > % '43.0738740,-70.713993,blue' (midsize blue marker) > % '43.0738740,-70.713993,yellowa' (midsize yellow > % marker with label "A") > % '43.0738740,-70.713993,tinyredb' (tiny red marker > % with label "B") > % > % RESULTS: > % XX Estimate of Easting pixel coordinates in UTM > % YY Estimate of Northing pixel coordinates in UTM > % M Image data matrix (height x width) > % Mcolor Image colormap > % > % EXAMPLE: > % > % % Get the map > % [XX YY M Mcolor] = get_google_map(43.0738740,-70.713993); > % % Plot the result > % surf(XX,YY,M,'edgecolor','none'); view(0,90); > % colormap(Mcolor) > % > % > % > % References: > % http://code.google.com/apis/maps/documentation/staticmaps > % > % KNOWN BUGS AND ISSUES: > % 1) MAP Bounds. The bounds reported by this function are an approximation > % based on repeated trials, as there is no way (to my knowledge) in which > % to query Google for the bounds of the map image exactly. This method is > % potentially ripe with errors. For example, it may not produce correct > % bounds at latitudes far from 40 degrees N/S where it was calibrated. > % 2) No provision has been programmed to handle locations near the date > % line, nor boundaries between UTM zones. Images that cross these will > % likely produce improper bounds. > % > % * Val Schmidt > % * University of New Hampshire > % * Center for Coastal and Ocean Mapping > % * 2009 > > % Google Maps Key for http://ccom.unh.edu > MAPS_API_KEY = ['ABQIAAAAgjJdMDG4XFg3DYYdLGwa8RTR4qNa0YPO2GvXB6kZVmHq2RMeSBSITPO142vFjK9HnDCoEOMZK1TA9w']; > > % HANDLE ARGUMENTS > > height = 640; > width = 640; > zoomlevel = 15; > maptype = 'satellite'; > > markeridx = 1; > markerlist = {}; > if nargin > 2 > for idx = 1:2:length(varargin) > switch lower(varargin{idx}) > case 'height' > height = varargin{idx+1}; > case 'width' > width = varargin{idx+1}; > case 'zoom' > zoomlevel = varargin{idx+1}; > case 'maptype' > maptype = varargin{idx+1}; > case 'marker' > markerlist{markeridx} = varargin{idx+1}; > markeridx = markeridx + 1; > otherwise > error(['Unrecognized variable: ' varargin{idx}]) > end > end > end > > > if zoomlevel <1 || zoomlevel > 19 > error('Zoom Level must be > 0 and < 20.') > end > > if mod(zoomlevel,1) ~= 0 > zoomlevel = round(zoomlevel) > warning(['Zoom Level must be an integer. Rounding to '... > num2str(zoomlevel)]); > end > > % ESTIMATE BOUNDS OF IMAGE: > % > % Normally one must specify a center (lat,lon) and zoom level for a map. > % Zoom Notes: > % ZL: 15, hxw = 640x640, image dim: 2224.91 x 2224.21 (mean 2224.56) > % ZL: 16, hxw = 640x640, image dim: 1128.01m x 1111.25m (mean 1119.63) > % This gives an equation of roughly (ZL-15)*3.4759 m/pix * pixels > % So for an image at ZL 16, the LHS bound is > % LHS = centerlonineastings - (zl-15) * 3.4759 * 640/2; > [lonutm latutm zone] = deg2utm(lat,lon); > Hdim = (2^15/2^zoomlevel) * 3.4759 * width; > Vdim = (2^15/2^zoomlevel) * 3.4759 * height; > > ell = lonutm - Hdim/2; > nll = latutm - Vdim/2; > eur = lonutm + Hdim/2; > nur = latutm + Vdim/2; > > YY = linspace(nll,nur,height); > XX = linspace(ell,eur,width); > > % CONSTRUCT QUERY URL > preamble = 'http://maps.google.com/staticmap'; > location = ['?center=' num2str(lat,10) ',' num2str(lon,10)]; > zoom = ['&zoom=' num2str(zoomlevel)]; > size = ['&size=' num2str(width) 'x' num2str(height)]; > maptype = ['&maptype=' maptype ]; > markers = '&markers='; > for idx = 1:length(markerlist) > if idx < length(markerlist) > markers = [markers markerlist{idx} '%7C']; > else > markers = [markers markerlist{idx}]; > end > end > format = '&format=gif'; > key = ['&key=' MAPS_API_KEY]; > sensor = '&sensor=false'; > url = [preamble location zoom size maptype format markers key sensor]; > disp(url) > % GET THE IMAGE > filename = urlwrite(url,'tmp.gif'); > [M Mcolor] = imread(filename); > M = cast(M,'double'); > > % CLEAN UP > delete(filename); A silly question I'm sure, but have you fulfilled requirement 2 of the help text?
|
Pages: 1 Prev: putting 'find' results into its respective columns Next: Importing a java class in to Simulink |