Resolve a physical location to a logical location - rascal

I already found the resolveLocation() function to convert a logical location to a physical location. Does there also exist a function to convert a physical location to a logical location?
In that case, a location with for example "|project://...", would resolve in "|java+class:///...".
I would then be able to use it in the readFileLines() function.

You can look up the mapping in both directions in the m3 model with the .declarations field:
data M3(
rel[loc name, loc src] declarations ...
To look up physical from logical:
mymodel.declarations[logicalURI]
A reverse lookup requires you to invert the relation first
mymodel.decls<src, name>[physicalURI]
By the way, if your m3 model is "registered" the readFile functions will do the resolution for you and just work on any URi. Registration happens by default as a side effect from the createM3FromEclipseProject function.

Related

Swift: getting user location based on geoJSON

Given a geoJSON representation of each US state (such as found here), along with user location coordinates (as available via CLLocationManager), what would be the best way to identify which state is the user in? What is the standard way to parse the geoJSON file, and simply identify which polygons contain the user location?
Let's say my location is in Indiana. I'm looking to create a function that parses the geoJSON representing the US, and identify that the user location only falls within the boundaries of Indiana coordinates.
Any suggestions/tips here is appreciated.

Find if a point (latitude, longitude) is within OpenStreetMaps "way" (area)

I have a list of longitude and latitude points for various houses, offices, etc. I am trying to split them up to determine if they are inside a certain Way or not. I don't want to use the old "centre point" of an area and then radius value as that is not accurate enough.
So for example if I had 4 locations in an Way like "Richmond Upon Thames" that looks like this:
It should return just point B and C. Is this possible using Open Street Maps API?
If you like Java, you could load the way as a Polygon and use the JTS (Java Topology Suite) library, or the AWT library to compute whether your points are inside or not.
Here is an example of how the Atlas library uses a combination of both in that specific case. For you it would look like this:
Convert each latitude/longitude pair of the Way to a Location object
Add each Location to a List and create a new Polygon with it
Call the Polygon.fullyGeometricallyEncloses(Location) method on that Polygon with each of the points of interest you have
The Atlas library is available in Maven Central for you to download.

How to use latitude and longitude in a Zillow search url

When searching on Zillow using an address, the URL looks like this:
http://www.zillow.com/homes/{Street}", -"{City}," -"{State}" "{PostalCode}_rb/
However, there seems to be no documentation regarding the use of geographic coordinates in such a url.
How to use latitude and longitude instead of an address?
An answer in Can I search Zillow using latitude and longitude coordinates? - Zillow Questions (the 1st Google result on "Zillow search by coordinates") dated 03.2015 gives an example:
http://www.zillow.com/homes/#/homes/for_sale/fsba,fsbo,new_lt/1_pnd/88.769211,-70.092773,-90,-158.686523_rect/3_zm/0_mmm/
Testing shows that only the http://www.zillow.com/homes and /88.769211,-70.092773,-90,-158.686523_rect parts are required.
It's x0,y0,x1,y1 (the direction between the points can be any). (The coordinates in the example are quite strange and specify an area up to the North Pole. More realistic ones are e.g. 53.67068,-71.323242,13.453737,-127.045898_rect.)
Since the last test, the technique stopped working. Moreover, coordinates appear to have vanished from property details as well!
There is no way provided to bring up a specific object by coordinates - they are instead uniquely identified by an ID (ZPID - Zillow Property ID) - and the way to bring up one as of now is e.g. http://www.zillow.com/homedetails/7044216_zpid/.
A possible reason is there's no way to guarantee that coordinates identify anything or identify something uniquely. I.e. coordinates are conceptually a search term rather than a means of identification.
Finally, do keep in mind that all this is undocumented and is subject to change (you can already see one quite-a-change above). They only support API as the means to access their services programmatically.

What kind of coordinates are these numbers?

I have geo data, that contain X field like: 1012532,749 and Y field like: 178774,7655. This data from the shapefile format, but I don`t know in what GEO standart this data is.
Maybe someone know, or can show me the way to find out, how translate this coords in GPS.
From your comment the situation is clear:
You got an invalid shape file:
The prj file states WGS84 coordinates in decimal degrees
which has range: (longitude(x) [-180-.0, 180.0], latitude(y): [-90.0, 90.0].
But the coordinates posted are not in valid range.
The prj definition does not fit to the rest of the shape files (your posted coordinate).
(This happens because the prj file is optional, and has probably the default settings of some other project)
There is little chance of knowing, without further knowlegde.
Simply ask the data provider which geographical datum (name) the coordinates are related to. Further you should claim, that the file is erorrnous and that they should provide a correct prj file (or remove the prj file, if the coordinates are not related to world coordinates)
IF you know the source, e.g the swiss "Landesvermessung" then you could think it is for example a "Swiss Grid CH1903+ / LV95" grid system. (This was an example, the coordinates are not in that Swiss grid)
But it does not make sense to reverse engineer that, just ask the data provider, or if appliable read the info where you have got that data from.

Form Google Maps URL that searches for a specific places near specific coordinates

I have the longitude and latitude and the name of the place I want to look for. How do I edit the Google Maps URL so that I obtain all the places (name of the places) near a set of coordinates?
I know I could do this using Google Map API, but just for a link seems a lot of trouble.
You can use the query parameter ll for your lat and long, and you can use the query parameter q for what you want to search.
http://maps.google.com/?ll=39.774769,-74.86084
Or you can
http://maps.google.com/?q=your+query
Yeah, I had the same question for a long time and I found the perfect one. Here are some parameters from it.
https://maps.google.com/?parameter=value
q=
Used to specify the search query in Google maps search.
eg :
https://maps.google.com/?q=newyork or
https://maps.google.com/?q=51.03841,-114.01679
near=
Used to specify the location instead of putting it into q. Also has
the added effect of allowing you to increase the AddressDetails
Accuracy value by being more precise. Mostly only useful if q is a
business or suchlike.
z=
Zoom level. Can be set 19 normally, but in certain cases can go up to 23.
ll=
Latitude and longitude of the map centre point. Must be in that order. Requires decimal format. Interestingly, you can use this without q, in which case it doesn’t show a marker.
sll=
Similar to ll, only this sets the lat/long of the centre point for a business search. Requires the same input criteria as ll.
t=
Sets the kind of map shown. Can be set to:
m – normal map
k – satellite
h – hybrid
p – terrain
saddr=
Sets the starting point for directions searches. You can also add text into this in brackets to bold it in the directions sidebar.
daddr=
Sets the end point for directions searches, and again will bold any text added in brackets.You can also add "+to:" which will set via points. These can be added multiple times.
via=
Allows you to insert via points in directions. Must be in CSV format. For example, via=1,5 addresses 1 and 5 will be via points without entries in the sidebar. The start point (which is set as 0), and 2, 3 and 4 will all show full addresses.
doflg=
Changes the units used to measure distance (will default to the standard unit in country of origin). Change to ptk for metric or ptm for imperial.
msa=
Does stuff with My Maps. Set to 0 show defined My Maps, b to turn the My Maps sidebar on, 1 to show the My Maps tab on its own, or 2 to go to the new My Map creator form.
reference : http://moz.com/ugc/everything-you-never-wanted-to-know-about-google-maps-parameters
additional info:
http://maps.google.com/maps?q=loc:
put in latitude and longitude after, example:
http://maps.google.com/maps?q=loc:51.03841,-114.01679
this will show pointer on map, but will suppress geocoding of the address, best for a location without an address, or for a location where google maps shows the incorrect address.
As of Jan 2018 (update: still works in May 2022) the latest URL is:
https://google.com/maps/search/*your search string* (address, landmark, city, etc. Spaces are ok)
Examples:
https://google.com/maps/search/empire state building
https://google.com/maps/search/1600 Pennsylvania Ave NW, Washington, DC 20500
You can use the new URL for Google Maps: https://www.google.com/maps/#39.774769,-74.86084,18z
equivalent to http://maps.google.com/?ll=39.774769,-74.86084.
39.774769 is the latitude and -74.86084 is longitude and 18z is 18 zoom level.
Google now has a documentation page dedicated to Maps URLs:
https://developers.google.com/maps/documentation/urls/guide
An API key is not required.
Manipulating one of the examples, I came up with this URL scheme that fits your question:
https://www.google.com/maps/search/<search term>/#<coordinates>,<zoom level>z
A valid example of this would be:
https://www.google.com/maps/search/pizza/#41.089988,-81.542901,12z
This should show you all of the pizza places around Akron, Ohio.

Resources