mercredi 24 juillet 2019

Some lines of code is not executing, how can i fix it

I have some adresses' lat and lng with the help of google, yandex and arcgis. Arcgis has all of lat and lng. But google and yandex has some error codes. So Laty means yandex latitude result, Latg means google latitude result etc.,

Here what i want to do: 1. If there is no error in google and yandex, i will compare three of them. When i find closer two of them, i will calculate their lat/lng's mid point. 2. If there is an error in google and yandex, i will calculate their lat/lng's mid point. 3. If google and yandex both have error code i will print arcgis lat/lng

I use Statusy and Statusg to find error ones. If they are not 'OK', then they have error code. Uzaklıkga/Uzaklıkgy/Uzaklıkya means distinct between coordinates of adress google and arcgis/google and yandex/yandex and arcgis.

Here is my example data :

Sıra|Adres|Laty|Lngy|Statusy|Latg|Lngg|Statusg|Lata|Lnga|Statusa 6118|Adiyaman, Merkez, Siratut Mah.,|37.76|38.28|OK|37.76|38.27|OK|37.76 38.28|OK 12039|ISTANBUL, Basaksehir,|None|None|ERROR - HTTPSConnectionPool(host='geocode-maps.yandex.ru', port=443): Max retries exceeded with url:|41.07|28.66|OK|41.07|28.66|OK 6487|ANKARA, ÇANKAYA,|39.92|32.86|OK|None|None|None|39.92| 32.87|OK 11285|SANLIURFA, SIVEREK, |None|None|None|None None|None|37.76|39.30|OK

Here is my preperations:

library(readxl)
kordinatlar <- read_excel("D:/Users/46702553338/Desktop/kordinatlar.xlsx")

laty<-as.numeric(kordinatlar$Laty)
latg<-as.numeric(kordinatlar$Latg)
lata<-as.numeric(kordinatlar$Lata)


lngy<-as.numeric(kordinatlar$Lngy)
lngg<-as.numeric(kordinatlar$Lngg)
lnga<-as.numeric(kordinatlar$Lnga)


kordinatlar$Uzaklıkgy<-sqrt((lngg-lngy)^2+(latg-laty)^2)
kordinatlar$Uzaklıkga<-sqrt((lngg-lnga)^2+(latg-lata)^2)
kordinatlar$Uzaklıkya<-sqrt((lnga-lngy)^2+(lata-laty)^2)

Statusy<-kordinatlar$Statusy
Statusg<-kordinatlar$Statusg

accuracyy<-kordinatlar$Accuracyy
accuracyg<-kordinatlar$Accuracyg



Uzaklıkga<-kordinatlar$Uzaklıkga
Uzaklıkya<-kordinatlar$Uzaklıkya
Uzaklıkgy<-kordinatlar$Uzaklıkgy


as.numeric(Uzaklıkya)
as.numeric(Uzaklıkga)
as.numeric(Uzaklıkya)

Here is my code:

for (i in 1:7334)
  {
  if (Statusy[i]=='OK'&&Statusg[i]=='OK') 
    {
    if(Uzaklıkga>Uzaklıkgy)
      {
      if (Uzaklıkya>Uzaklıkgy)
        {
        paste(kordinatlar$Lngenyakin1<-((lngg+lngy)/2))
      }
      else
        {
        paste(kordinatlar$Lngenyakin1<-((lnga+lngy)/2))
      }
    }
    else if (Uzaklıkga>Uzaklıkya)
      {
      if (Uzaklıkgy>Uzaklıkya)
        {
        paste(kordinatlar$Lngenyakin1<-((lnga+lngy)/2))
      }
      else 
        {
        paste(kordinatlar$Lngenyakin1<-((lngy+lngg)/2)) 
      }
    }
    else if (Uzaklıkya>Uzaklıkga)
    {
      if (Uzaklıkgy>Uzaklıkga)
      {
        paste(kordinatlar$Lngenyakin1<-((lnga+lngg)/2))
      }
      else 
      {
        paste(kordinatlar$Lngenyakin1<-((lngg+lngy)/2)) 
      }
    }
    else if (Uzaklıkya>Uzaklıkgy)
    {
      if (Uzaklıkga>Uzaklıkgy)
      {
        paste(kordinatlar$Lngenyakin1<-((lngg+lngy)/2))
      }
      else 
      {
        paste(kordinatlar$Lngenyakin1<-((lngg+lnga)/2)) 
      }
    }
    else if (Uzaklıkgy>Uzaklıkga)
    {
      if (Uzaklıkya>Uzaklıkga)
      {
        paste(kordinatlar$Lngenyakin1<-((lnga+lngg)/2))
      }
      else 
      {
        paste(kordinatlar$Lngenyakin1<-((lnga+lngy)/2)) 
      }
    }
    else if (Uzaklıkgy>Uzaklıkya)
    {
      if (Uzaklıkga>Uzaklıkya)
      {
        paste(kordinatlar$Lngenyakin1<-((lngy+lnga)/2))
      }
      else 
      {
        paste(kordinatlar$Lngenyakin1<-((lngg+lnga)/2)) 
      }
    }
  }
  else if(Statusg[i]=='OK'&&Statusy[i]!='OK')
  {
    paste(kordinatlar$Lngenyakin1<-((lngg+lnga)/2))
  }
  else if(Statusy[i]=='OK'&&Statusg[i]!='OK')
    {
    paste(kordinatlar$Lngenyakin1<-((lngy+lnga)/2))
  }
  else
    {
    paste(kordinatlar$Lngenyakin1<-lnga)
  }
}  

I have no error message, all of code is working except; at the situation Statusg is 'OK' and Statusy[i] is not 'OK'

at the situation Statusg is not 'OK' and Statusy[i] is not 'OK'

It reply 'NA'. It has to turn lnga or (lngg+lnga)/2

Aucun commentaire:

Enregistrer un commentaire