Добрый день, Хабр! Давно мечтал внести свою лепту в этот замечательный проект, который читаю уже несколько лет.

Но так как я не программист по образованию, мои проекты были не столь изящные, как представленные здесь. Поэтому очень долго думал, что же можно разместить тут и что не закидают минусами. В итоге в рамках работы появилась идея оптимизации работы сотрудников, позволяющая существенно (на мой взгляд) упростить жизнь.

Суть идеи заключается в том, что есть земельные участки на которых можно строить только частные жилые дома (Индивидуальное жилое строительство), и при этом запрещается использовать эти помещения для коммерческой деятельности. Хотя в России это никого не останавливало, и получается, что сотрудники должны ходить и проверять, что дом построен как жилой, а используется как ларек. В итоге ходить нужно долго и много плюс постоянно нужен доступ к информации для уточнения что же это за дом. Ну или же в офисе выбирать адреса для проверки и потом запрячь верблюдов, пополнить запасы воды и отправляться в удивительное путешествие.

Так как у нас в СМИ говорят что якобы цифровая экономика на дворе и вообще интернет вещей. То подход в виде посмотри в базе и иди погуляй как-то смотрится странно.

В итоге, реализуя идею по созданию тепловой карты на базе публичной кадастровой карты и анализируя данные на сайте, были получены сперва данные о всех кадастровых кварталах в рамках района. Способ извлечения был не очень гуманный. В разборе тайлов загружаемых на карте, были сохранены все SVG файлы, и из тегов описания геометрии были экспортированы названия кварталов.

Позже по каждому кварталу были получены все объекты в его границах. Проблема появилась на этапе анализа данных, что координаты объектов даны в формате merсator P3857, пришлось добавлять перевод в привычную систему координат с долготой и широтой. Координаты объекта даются в двух видах, это точный центр участка и крайние точки общей геометрии участка.

json данные
"center": {
"x": 5135333.187724394,
"y": 6709637.473119974
},
"extent": {
"xmax": 5135346.924914406,
"xmin": 5135320.375756669,
"ymax": 6709666.568613776,
"ymin": 6709611.5618947
}


Первые координаты после перевода я использовал для тепловой карты. Пока возился с картой в QGIS (который я видел первый раз) пришла шальная идея что в популярных сервисах Яндекс карты и 2Гис можно искать объекты по координатам. Сразу же решил проверить данную теорию. И правда, если вбить координаты, то оба сервиса предоставляют информацию о данном доме. Следовательно напрашивается вывод, если отобрать объекты с характеристиками только под жилое строительство, и проверить их через данные об организациях, в случае если карты возвращали список организаций, то данное строение используется не по целевому назначению.

Первоначальная проверка осуществлялась на данных о центре участка, и как показала практика, данные не всегда сходились, так как участок больше чем дом на нем, и не всегда дом стоит посередине участка. Но для подтверждения теории это сгодилось. Проверял на том участке, который точно знаю, что там есть частный сектор и точно есть мелкие магазинчики или сервисы.

Для получения данных от карт использовал туповатый скрипт на Python (сразу извиняюсь? если этим кодом обидел программистов):

код
import requests
import json
import time
import csv
import pyproj
from random import choice
from random import randint
from pandas import read_csv

def get_proxy():
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 8; WOW32; rv:54.0) Gecko/20100101 Firefox/54.0'}
    proxies = open('proxy.txt').read().split('\n')
    result=None
    proxy=""
    while result is None:
        try:
            proxy = {'http':'http://'+choice(proxies)}
            r = requests.get('http://ya.ru',headers=headers, proxies=proxy,timeout=(60, 60))
            if r.status_code==200:
                result=proxy
        except:
             pass
    return proxy


def main():
    headers = {
            'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
            'Accept-Encoding':'gzip, deflate',
            'Accept-Language':'ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4',
            'Cache-Control':'max-age=0',
            'Connection':'keep-alive',
            'Cookie':'_ym_uid=1495451406361935235; _ym_isad=1; topCities=43-2; _2gis_webapi_session=0faa6497-0004-47c5-86d8-3bf9677f972a; _2gis_webapi_user=7e256d33-4c6e-44ab-a219-efc71e2d330f',
            'DNT':'1',
            'Host':'catalog.api.2gis.ru',
            'Upgrade-Insecure-Requests':'1',
            'User-Agent':'Mozilla/5.0 (Windows NT 7; WOW32; rv:54.0) Gecko/20100101 Firefox/54.0',
            'X-Compress':'null'
            }

    print("start")
    csvfile = open('GetShopsByCoordinats.csv', 'a', newline='')
    fieldnames = ['id', 'x','y','shops','names']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames, delimiter=';', quotechar='|',)
    writer.writeheader()
    
    inputCSV = read_csv('for2GIS.csv', sep=';', skiprows=[0], header=None)
    for i in range (0,5):
        s= 'point='+str(inputCSV[1][i])+'%2C'+str(inputCSV[2][i])+'&fields=search_attributes%2Citems.links&key=rutnpt3272'
        print (s)
        with requests.Session() as session:
            r=session.get('https://catalog.api.2gis.ru/2.0/geo/search?'+s, headers=headers,timeout=(60, 60))
            JsonData = r.json()
        try:
            print(JsonData['result']['items'][0]['links']['branches']['count'])
            writer.writerow({'id': str(inputCSV[0][i]),'x': str(inputCSV[1][i]), 'y': str(inputCSV[2][i]), 'shops': JsonData['result']['items'][0]['links']['branches']['count'] })
        except:
            writer.writerow({'id': str(inputCSV[0][i]),'x': str(inputCSV[1][i]), 'y': str(inputCSV[2][i]), 'shops': 'none' })

        time.sleep(randint(1,3))
    
    csvfile.close()
    print ('fin')

if __name__=='__main__':
    main()


В итоге получился файл в котором отражены все проверяемые объекты с кадастровым номером и координатами центра участка и данными с сайта о количестве магазинов в данной точке. Сами названия и контактные данные были не нужны.

Банальный автофильт в экселе по столбцу с количеством магазинов более 0, и получаем список потенциальных нарушителей, нужно только пройтись по уже «проверенным» адреса.
В планах на будущее сделать поиск не по точке а в радиусе границ участка, вроде такая возможность есть в API. И если количество выявленных объектов будет достаточным, то можно даже сделать построитель оптимальных маршрутов и шаблоны актов проверки по имеющимся данным.

Получилась очень простая система, которая позволяет не гулять просто так сотрудникам, а проверять только нужные объекты. После подтверждения выявленных объектов и если понадобится корректировке алгоритма, можно формировать списки на проверку автоматически, просто выделяя необходимую область проверки на карте.

Касательно выгрузки данных, на загрузку, сейчас получен легальный API ключ.

Комментарии (28)


  1. VasakaInc
    02.09.2017 12:22
    -6

    Вы только не удивляйтесь если вас начнут активно минусовать. От этого государства и так продыху нет. То цены повышают по просьбам трудящихся, то законы новые принимают исключительно во благо народа. Так что вашу помощь в том что бы было легче находить людей и дрючить многие не воспримут как благо. Вы своей «помощью» только набиваете карман очередному чиновнику.


    1. subn0wa
      02.09.2017 16:53
      +3

      Конечно, нафиг законы, государство — обуза. Мы здесь вла… Пардон, я методичкой ошибся, Вашу прихватил.


    1. Darkzenon Автор
      02.09.2017 17:30
      +3

      Да, весь профит пойдёт нашем государству. Но от этого же нельзя запретить думать. Да и работая на кого-то считаю, что должен принести максимум пользы какой только смогу, в пределах своих способностей. Будучу по другую сторону баррикад, были бы другие идеи. Все, что я придумывают считаю помогают в какой то мере в работе. Такова привычка. Прошу прощение если обидел Вас или ещё кого-либо.


      1. leshakk
        02.09.2017 20:53

        Наверное, также рассуждали немецкие инженеры, работавшие над повышением "производительности" газовых камер и крематориев.


        На даче вот уже 40 лет стоит домишко, построенный ещё дедом. В этом году пришла бумага с фоткой, сделанной с коптера и угрозами снести, если не зарегистрирую. Понимаю: нефть подешевела, а чинуши умерить свои аппетиты не хотят, значит надо еще что-то придумать, чтобы побольше ободрать народ. Наверное, кто-то из айтишников, участвовавших в этом проекте, тоже теперь гордится, как хорошо помог им подоить дачников.


        1. neu3y
          02.09.2017 21:20
          +2

          Понимаю: нефть подешевела, а чинуши умерить свои аппетиты не хотят, значит надо еще что-то придумать, чтобы побольше ободрать народ. Наверное, кто-то из айтишников, участвовавших в этом проекте, тоже теперь гордится, как хорошо помог им подоить дачников.


          Вы сильно принижаете доходы от нефти.
          Даже после падения они НЕСОПОСТАВИМО больше, чем стоит оформление даже всех земельных участков в РФ.

          Просто давным давно следовало бы вам сделать эти формальности.

          У чиновников, которые прислали вам этот документ ровным счетом нет никакого личного злого умысла. Соблюдение законов построенное на формальностях, на отсутствии личной заинтересованности в этом конкретных чинуш — есть благо.


        1. semt1
          03.09.2017 05:41

          На даче вот уже 40 лет стоит домишко, построенный ещё дедом


          Согласно новым законам вы можете оформить дачу как настоящий полноценный дом.


      1. amaksr
        03.09.2017 00:07

        Вообще сейчас многие задачи по земельному контролю можно если не автоматизировать, то хотябы свести к кликанию мышкой в кабинете. Например такие нарушения, как прирезание участков, неразрешенное строительство, нецелевое использование можно находить по яндекс-картам в режиме спутника, или гугль-стрит вью. Понятно, что снимкам будет пару-тройку лет, но зато не нужно туда ходить или гонять коптер.
        При нынешних технологиях те, кто делают такие вещи без разрешения властей — отважные камикадзе.


    1. neu3y
      02.09.2017 17:40

      А ниче, что нарушая границы земельных владений люди нарушают права ДРУГ ДРУГА.
      А вовсе не государства?


      1. Merkat0r
        03.09.2017 01:48
        -1

        и стоит это узаконить 25к с участка в МО и 15 минут, ведь никто реально топографию не делает :)


        1. Merkat0r
          06.09.2017 12:02

          интересно за что минус или очередной эльф никогда межевание не делал и думает, что все бесплатно и по закону за 100р сделают :)


  1. poznawatel
    02.09.2017 13:30

    Лучше бы государство пеклось об обратной связи (работа с жалобами, агентурой итп) и общественном контроле (а то даже «Ревизорро» прикрыли). Но нет же, в РФ граждане для государства а не государство для граждан.
    В Российской Империи дворник был самым младшим полицейским чином, мог свистком вызвать подмогу, мог и помочь задержать нарушителя. Уж не говоря о свободной продаже огнестрела.


    1. iamAnton
      02.09.2017 22:02
      +2

      Одно другому не мешает.


  1. PerlPower
    02.09.2017 17:07
    +7

    Получилась очень простая система, которая позволяет не гулять просто так сотрудникам, а проверять только нужные объекты.

    А они и так проверяют только нужные объекты.


    1. Darkzenon Автор
      02.09.2017 17:31
      +2

      Пообщавшись, логики в их проверке не нашёл.


      1. Squoworode
        02.09.2017 19:05
        +4

        Может быть, они скрывают логику выбора нужных объектов в облаке шума?


        1. Darkzenon Автор
          02.09.2017 19:09

          В целом люди знают какие районы в городе и где какие дома. Похож на частный дом и видел магазин, можно проверить. В некоторых городах целые улицы такие. Частный сектор оставшийся в центре города.


  1. iamAnton
    02.09.2017 22:03
    +1

    Здорово.
    А результаты работы будут описаны?


    1. Darkzenon Автор
      03.09.2017 05:45
      +2

      После всех экспериментов, да планируют дополнить статью.


  1. billybonns
    03.09.2017 05:43
    -2

    а кто вам сказал, что я не имею права сдавать в аренду например собственную квартиру для аренды организацией? У меня так зарегистрировано ООО, которое прекрасно работает. А вот насчет излишнего гнета государства и регулярного заглядывания в наши карманы это правда. ваша затея вредная и может быть использована для чиновничьего экстремизма


    1. Darkzenon Автор
      03.09.2017 05:44
      +1

      Квартира в многоквартирном доме. Там можно оформлять. Именно частный сектор под индивидуальную застройку.


      1. billybonns
        03.09.2017 19:55
        -1

        а на основании какого законодательного акта я не могу сдавать в аренду для юридического лица свой частный дом? не лучше сделать трекинг ям на дорогах и открытых люков, а также график ремонта за деньги налогоплательщиков дорог? берете карту яндекс и наносите на нее сколько на каждый участок дороги миллиардов в год потрачено. толку гораздо больше


  1. kovserg
    03.09.2017 10:33
    +3

    Лучше займитесь трекингом объектов и для турелей которые будут стрелять из крупнокалиберного пулемёта по нарушителям.
    image


    1. Darkzenon Автор
      03.09.2017 11:41
      +1

      Какая няшность. Мимими


  1. za90
    03.09.2017 12:23
    +2

    (сразу извиняюсь? если этим кодом обидел программистов)
    А тут, похоже, нет программистов… Всё юристы да активисты больше. Я конечно такой себе программист, но обиделся, что в коде нет ни одного комментария хотя бы. И понять, что там за [0], [1] или аж [2] в цикле range (0,5), сходу совершенно невозможно.


    1. saintbyte
      03.09.2017 14:31
      +2

      Интересно закон об оскорбление чувств верующих можно применить для программистов?


      1. za90
        04.09.2017 06:45

        Славься, Макаронный Монстр! Можно.


  1. trir
    05.09.2017 08:29

    даны в формате merсator P3857

    это не формат, а система координат и она называется EPSG:3857 WGS84 Web Mercator или просто гугло-меркатор


  1. trir
    05.09.2017 08:31

    Теоретически была возможность получения гос. структурами нормльного доступа к базе росреестра и пару лет назад мне даже показывали это в действии, но за последнее время многое изменилось…