Оптимизация процесса поиска нарушителей земельного законодательства

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

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

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

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

В итоге, реализуя идею по созданию тепловой карты на базе публичной кадастровой карты и анализируя данные на сайте, были получены сперва данные о всех кадастровых кварталах в рамках района. Способ извлечения был не очень гуманный. В разборе тайлов загружаемых на карте, были сохранены все 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

    –6
    Вы только не удивляйтесь если вас начнут активно минусовать. От этого государства и так продыху нет. То цены повышают по просьбам трудящихся, то законы новые принимают исключительно во благо народа. Так что вашу помощь в том что бы было легче находить людей и дрючить многие не воспримут как благо. Вы своей «помощью» только набиваете карман очередному чиновнику.
      +3
      Конечно, нафиг законы, государство — обуза. Мы здесь вла… Пардон, я методичкой ошибся, Вашу прихватил.
        +3

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

          0

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


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

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


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

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

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


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

              0
              Вообще сейчас многие задачи по земельному контролю можно если не автоматизировать, то хотябы свести к кликанию мышкой в кабинете. Например такие нарушения, как прирезание участков, неразрешенное строительство, нецелевое использование можно находить по яндекс-картам в режиме спутника, или гугль-стрит вью. Понятно, что снимкам будет пару-тройку лет, но зато не нужно туда ходить или гонять коптер.
              При нынешних технологиях те, кто делают такие вещи без разрешения властей — отважные камикадзе.
              0
              А ниче, что нарушая границы земельных владений люди нарушают права ДРУГ ДРУГА.
              А вовсе не государства?
                –1
                и стоит это узаконить 25к с участка в МО и 15 минут, ведь никто реально топографию не делает :)
                  0
                  интересно за что минус или очередной эльф никогда межевание не делал и думает, что все бесплатно и по закону за 100р сделают :)
              0
              Лучше бы государство пеклось об обратной связи (работа с жалобами, агентурой итп) и общественном контроле (а то даже «Ревизорро» прикрыли). Но нет же, в РФ граждане для государства а не государство для граждан.
              В Российской Империи дворник был самым младшим полицейским чином, мог свистком вызвать подмогу, мог и помочь задержать нарушителя. Уж не говоря о свободной продаже огнестрела.
                +2
                Одно другому не мешает.
                +7
                Получилась очень простая система, которая позволяет не гулять просто так сотрудникам, а проверять только нужные объекты.

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

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

                    +4
                    Может быть, они скрывают логику выбора нужных объектов в облаке шума?
                      0
                      В целом люди знают какие районы в городе и где какие дома. Похож на частный дом и видел магазин, можно проверить. В некоторых городах целые улицы такие. Частный сектор оставшийся в центре города.
                  +1
                  Здорово.
                  А результаты работы будут описаны?
                    +2
                    После всех экспериментов, да планируют дополнить статью.
                    –2
                    а кто вам сказал, что я не имею права сдавать в аренду например собственную квартиру для аренды организацией? У меня так зарегистрировано ООО, которое прекрасно работает. А вот насчет излишнего гнета государства и регулярного заглядывания в наши карманы это правда. ваша затея вредная и может быть использована для чиновничьего экстремизма
                      +1
                      Квартира в многоквартирном доме. Там можно оформлять. Именно частный сектор под индивидуальную застройку.
                        –1
                        а на основании какого законодательного акта я не могу сдавать в аренду для юридического лица свой частный дом? не лучше сделать трекинг ям на дорогах и открытых люков, а также график ремонта за деньги налогоплательщиков дорог? берете карту яндекс и наносите на нее сколько на каждый участок дороги миллиардов в год потрачено. толку гораздо больше
                      +3
                      Лучше займитесь трекингом объектов и для турелей которые будут стрелять из крупнокалиберного пулемёта по нарушителям.
                      image
                        +1
                        Какая няшность. Мимими
                        +2
                        (сразу извиняюсь? если этим кодом обидел программистов)
                        А тут, похоже, нет программистов… Всё юристы да активисты больше. Я конечно такой себе программист, но обиделся, что в коде нет ни одного комментария хотя бы. И понять, что там за [0], [1] или аж [2] в цикле range (0,5), сходу совершенно невозможно.
                          +2
                          Интересно закон об оскорбление чувств верующих можно применить для программистов?
                            0
                            Славься, Макаронный Монстр! Можно.
                          0
                          даны в формате merсator P3857

                          это не формат, а система координат и она называется EPSG:3857 WGS84 Web Mercator или просто гугло-меркатор
                            0
                            Теоретически была возможность получения гос. структурами нормльного доступа к базе росреестра и пару лет назад мне даже показывали это в действии, но за последнее время многое изменилось…

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

                            Самое читаемое