Пакистан Twitter Stream Широта и долгота

1

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

Я использовал параметр местоположения, упомянутый в ссылке Passing Longitude and Latitude в Twitter Streaming API Пакистана

Ошибка: 7924 [Twitter Stream consumer-1 [Установление соединения]] WARN twitter4j.TwitterStreamImpl - Параметр не принимается с ролью. 406: Возврат API поиска, когда в запросе указан недопустимый формат.

Возвращается потоковым API, когда один или несколько параметров не подходят для ресурса. Например, параметр трека будет вызывать эту ошибку, если:

Ключевое слово трека слишком длинное или слишком короткое.

Указанная ограничивающая рамка недействительна.

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

Невозможно прочитать следующую команду.

Параметры фильтра не найдены. Ожидайте хотя бы один параметр: следуйте за местоположениями дорожек

    LinkedBlockingQueue<Status> queue = new LinkedBlockingQueue<Status>(1000);
    SpoutOutputCollector _collector = collector;
    StatusListener listener = new StatusListener() {

        @Override
        public void onStatus(Status status) {
            System.out.println(status.getLang());
            System.out.println(status.getPlace());
            System.out.print(status.getText());
        }

        @Override
        public void onDeletionNotice(StatusDeletionNotice sdn) {
        }

        @Override
        public void onTrackLimitationNotice(int i) {
        }

        @Override
        public void onScrubGeo(long l, long l1) {
        }

        @Override
        public void onException(Exception e) {
        }

        @Override
        public void onStallWarning(StallWarning arg0) {
            // TODO Auto-generated method stub

        }

    };


    TwitterStreamFactory fact = new TwitterStreamFactory(new ConfigurationBuilder().setUser(_username).setPassword(_pwd).build());
    TwitterStream _twitterStream = fact.getInstance();
    _twitterStream.addListener(listener);

    ArrayList<Long> follow = new ArrayList<Long>();
    ArrayList<String> track = new ArrayList<String>();

    long[] followArray = new long[follow.size()];
    String[] trackArray = track.toArray(new String[track.size()]);

    /**
    * Upper/northern latitude that marks the
    * upper bounds of the geographical area
    * for which tweets need to be analysed.
    */
    double northLatitude = 35.2;
    /**
    * Lower/southern latitude. Marks the lower bound.
    */
    double southLatitude = 25.2;
    /**
    * Eastern/left longitude. Marks the left-side bounds.
    */
    double eastLongitude = 62.9;
    /**
    * Western/right longitude. Marks the right-side bounds.
    */
    double westLongitude = 73.3;


    double bb[][] = {{eastLongitude, southLatitude}
    ,{westLongitude, northLatitude}};


    _twitterStream.filter(new FilterQuery(0, followArray,trackArray,bb,new String[]{"en-US"}));


     .

Пожалуйста, помогите мне, где я ошибаюсь?

  • 0
    Вопросы, требующие помощи в отладке (« почему этот код не работает? ») Должны включать желаемое поведение, конкретную проблему или ошибку и самый короткий код, необходимый для его воспроизведения в самом вопросе . Вопросы без четкой постановки проблемы бесполезны для других читателей. См. Как создать минимальный, полный и проверяемый пример .
  • 0
    У меня есть частичный код загрузки. Потому что этот код использовали в Storm. И код Storm слишком велик. Моя проблема заключается в том, что FilterQuery отправить ошибку, что местоположение является недопустимым. Но я упомянул границу местоположения. Вы поняли мою точку зрения?
Показать ещё 2 комментария
Теги:
location
twitter
latitude-longitude

1 ответ

2
Лучший ответ

Попробуйте снова прочитать " Передача долготы и широты" в Twitter Streaming API Пакистана.

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

Это означает запад, юг, восток север.

У тебя есть:

double locationsPakistan[][] = {{eastLongitude, southLatitude}
    ,{westLongitude, northLatitude}};

Пытаться:

double locationsPakistan[][] = {{westLongitude, southLatitude}
    ,{eastLongitude, northLatitude}};

Обновить

В соответствии с вашим комментарием после редактирования кода у вас теперь есть:

double northLatitude = 35.2;
double southLatitude = 25.2;
double eastLongitude = 62.9;
double westLongitude = 73.3;

double bb[][] = {{eastLongitude, southLatitude},{westLongitude, northLatitude}};

Вы смешиваете Восток/Запад влево/вправо.

Ваши комментарии показывают это, поскольку у вас есть " Восточная/левая долгота". Отмечает границы слева.

Восток - это правая сторона. Точно так же Запад - это левая сторона. Запад должен быть <Восток.

Так сделайте так:

double northLatitude = 35.2;
double southLatitude = 25.2;
double westLongitude = 62.9;
double eastLongitude = 73.3;

double bb[][] = {{westLongitude, southLatitude},{eastLongitude, northLatitude}};
  • 0
    Я сделал эти изменения, но все еще та же ошибка. Я обновил код в моем вопросе. Теперь вы можете запустить код. Но нужно для настройки Twitter API.
  • 0
    Спасибо. Теперь работает нормально. Я могу получить пакистанские твиттер-потоки
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню