[datameet] Re: Help in Scraping Data

2020-05-28 Thread Souvik Sankar Mitra
I am also glad sir it helps. 

On Thursday, May 28, 2020 at 9:33:04 PM UTC+5:30, Abhiroop Sarkar wrote:
>
> Hi Souvik, this is an extremely wonderful script. I just tried this and it 
> seemed to work great in all the different scenarios. Thanks a lot for the 
> help!
>
> On Thursday, May 28, 2020 at 6:18:49 PM UTC+5:30, Souvik Sankar Mitra 
> wrote:
>>
>> To download mvt of "Mumbai Existing Land Use" I have written this code. 
>> As the mvt files are stored according to zoom level . I run it from zoom 
>> level 10 to zoom level 21. This stores all mvt files w.r.t zoom level in 
>> different directory. Hope it helps. 
>>
>> On Wednesday, May 27, 2020 at 6:32:38 PM UTC+5:30, Abhiroop Sarkar wrote:
>>>
>>> Hi, can someone help in extracting some data from 
>>> http://www.loginmumbai.org/map.html ? There is a lot of data on here 
>>> regarding Mumbai which can be helpful for further analysis.
>>>
>>> I have spent some time on this and from what I saw, all the layers are 
>>> displayed in 2 ways -
>>> 1. Directly parsing TopoJSON through OpenLayers.
>>> 2. Loading Vector Tiles (.mvt) through OpenLayers.
>>> The smaller point and polygon layers are loaded directly whereas the 
>>> heavier polygon and polyline layers are loaded through the vector tiles.
>>>
>>> What I am having trouble with is extracting the vector tiles. For 
>>> example, I want the layer under "LandUse and Development Plans" > 
>>> "Mumbai Existing Land Use". Fetching the zoomed out .mvt file and 
>>> loading it in QGIS works but zooming in shows that the edges of the 
>>> polygons are very jagged. Zooming in and then fetching the .mvt file 
>>> produces perfectly clean geometry but only for a small region (only the 
>>> specific tile).
>>>
>>> Can someone help in getting such layers in a clean way? One of the ways 
>>> would be to automate the process of panning the zoomed in webmap to 
>>> gradually load the detailed .mvt files and save them automatically upon 
>>> loading, but I lack the coding expertise to implement this. Any and all 
>>> suggestions are welcome.
>>>
>>> Thank you.
>>>
>>

-- 
Datameet is a community of Data Science enthusiasts in India. Know more about 
us by visiting http://datameet.org
--- 
You received this message because you are subscribed to the Google Groups 
"datameet" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to datameet+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/datameet/cd56a7d1-0de6-4dbb-a775-4dbe538025ce%40googlegroups.com.


[datameet] Re: Help in Scraping Data

2020-05-28 Thread Abhiroop Sarkar
Hi Souvik, this is an extremely wonderful script. I just tried this and it 
seemed to work great in all the different scenarios. Thanks a lot for the 
help!

On Thursday, May 28, 2020 at 6:18:49 PM UTC+5:30, Souvik Sankar Mitra wrote:
>
> To download mvt of "Mumbai Existing Land Use" I have written this code. 
> As the mvt files are stored according to zoom level . I run it from zoom 
> level 10 to zoom level 21. This stores all mvt files w.r.t zoom level in 
> different directory. Hope it helps. 
>
> On Wednesday, May 27, 2020 at 6:32:38 PM UTC+5:30, Abhiroop Sarkar wrote:
>>
>> Hi, can someone help in extracting some data from 
>> http://www.loginmumbai.org/map.html ? There is a lot of data on here 
>> regarding Mumbai which can be helpful for further analysis.
>>
>> I have spent some time on this and from what I saw, all the layers are 
>> displayed in 2 ways -
>> 1. Directly parsing TopoJSON through OpenLayers.
>> 2. Loading Vector Tiles (.mvt) through OpenLayers.
>> The smaller point and polygon layers are loaded directly whereas the 
>> heavier polygon and polyline layers are loaded through the vector tiles.
>>
>> What I am having trouble with is extracting the vector tiles. For 
>> example, I want the layer under "LandUse and Development Plans" > 
>> "Mumbai Existing Land Use". Fetching the zoomed out .mvt file and 
>> loading it in QGIS works but zooming in shows that the edges of the 
>> polygons are very jagged. Zooming in and then fetching the .mvt file 
>> produces perfectly clean geometry but only for a small region (only the 
>> specific tile).
>>
>> Can someone help in getting such layers in a clean way? One of the ways 
>> would be to automate the process of panning the zoomed in webmap to 
>> gradually load the detailed .mvt files and save them automatically upon 
>> loading, but I lack the coding expertise to implement this. Any and all 
>> suggestions are welcome.
>>
>> Thank you.
>>
>

-- 
Datameet is a community of Data Science enthusiasts in India. Know more about 
us by visiting http://datameet.org
--- 
You received this message because you are subscribed to the Google Groups 
"datameet" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to datameet+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/datameet/8449bd7d-5304-460d-a908-c93622b09e51%40googlegroups.com.


[datameet] Re: Help in Scraping Data

2020-05-28 Thread Souvik Sankar Mitra
To download mvt of "Mumbai Existing Land Use" I have written this code. As 
the mvt files are stored according to zoom level . I run it from zoom level 
10 to zoom level 21. This stores all mvt files w.r.t zoom level in 
different directory. Hope it helps. 

On Wednesday, May 27, 2020 at 6:32:38 PM UTC+5:30, Abhiroop Sarkar wrote:
>
> Hi, can someone help in extracting some data from 
> http://www.loginmumbai.org/map.html ? There is a lot of data on here 
> regarding Mumbai which can be helpful for further analysis.
>
> I have spent some time on this and from what I saw, all the layers are 
> displayed in 2 ways -
> 1. Directly parsing TopoJSON through OpenLayers.
> 2. Loading Vector Tiles (.mvt) through OpenLayers.
> The smaller point and polygon layers are loaded directly whereas the 
> heavier polygon and polyline layers are loaded through the vector tiles.
>
> What I am having trouble with is extracting the vector tiles. For example, 
> I want the layer under "LandUse and Development Plans" > "Mumbai Existing 
> Land Use". Fetching the zoomed out .mvt file and loading it in QGIS works 
> but zooming in shows that the edges of the polygons are very jagged. 
> Zooming in and then fetching the .mvt file produces perfectly clean 
> geometry but only for a small region (only the specific tile).
>
> Can someone help in getting such layers in a clean way? One of the ways 
> would be to automate the process of panning the zoomed in webmap to 
> gradually load the detailed .mvt files and save them automatically upon 
> loading, but I lack the coding expertise to implement this. Any and all 
> suggestions are welcome.
>
> Thank you.
>

-- 
Datameet is a community of Data Science enthusiasts in India. Know more about 
us by visiting http://datameet.org
--- 
You received this message because you are subscribed to the Google Groups 
"datameet" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to datameet+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/datameet/1e85c040-21dd-49f6-a896-97421f2d77c5%40googlegroups.com.
import math
import numpy

import requests
import os

cur = os.getcwd()


def deg2num(lat_deg, lon_deg, zoom):
  lat_rad = math.radians(lat_deg)
  n = 2.0 ** zoom
  xtile = int((lon_deg + 180.0) / 360.0 * n)
  ytile = int((1.0 - math.asinh(math.tan(lat_rad)) / math.pi) / 2.0 * n)
  return (xtile, ytile)

def unique(list1): 
arr1=[] 
# insert the list to the set 
list_set = set(list1) 
# convert the set to the list 
unique_list = (list(list_set)) 
for x in unique_list: 
arr1.append(x)
return arr1



#spatial extent of Mumbai
start = [19.308466, 72.785462]

end = [18.900295, 72.963473]

for b in range (10,22):
  print ("Processing for zoom "+str(b))
  arr=[]
  for i in numpy.arange(end[0],start[0],0.01):
  for j in numpy.arange(start[1],end[1],0.01):
  arr.append(deg2num(i,j, b))

  #print (arr)
  arr2=[]

  uni = unique(arr)


  dir1 = 'zoom_'+str(b)
  os.mkdir(dir1)
  os.chdir(cur+'/'+dir1)
  
  for a in uni:
  url = 'http://119.81.20.14:8893/mvt/mcgm_landuse/'+str(b)+'/'+str(a[0])+'/'+str(a[1])+'.mvt'
  r = requests.get(url, allow_redirects=True)
  open(str(a[0])+'_'+str(a[1])+'.mvt', 'wb').write(r.content)

  os.chdir(cur)
  
print ("Success")